Струнный палиндром

#c #string #recursion #palindrome

#c #строка #рекурсия #палиндром

Вопрос:

Когда я пытаюсь запустить этот код, я получаю противоположный результат. Пожалуйста, дайте мне знать, что я делаю не так…

 #includelt;bits/stdc  .hgt; using namespace std;  bool ps(string s,int l, int r){  if(lgt;=r)   return true;  if(s[l]!=s[r])  return false;  return ps(s,  l,--r); }   int main(){  string str="naman";  int s=str.size();  bool b=ps(str,0,s);  if(!b){  coutlt;lt;"Not a plaindrome";  }  else{  coutlt;lt;"A plaindrome";  }  return 0; }  

Ответ №1:

Вы вводите неверное начальное значение ps . Линия

 bool b=ps(str,0,s);  

должно быть

 bool b=ps(str,0,s - 1);  

поскольку последний символ в строке находится в индексе string.size() - 1 не string.size()

Комментарии:

1. Обратите внимание, что, чтобы понять, в чем была проблема, я добавил инструкцию печати в начало ps , чтобы посмотреть, как далеко она зашла ( cout lt;lt; "l " lt;lt; l lt;lt; " r lt;lt; r lt;lt; endl ) Добавление подобных инструкций или использование отладчика-это то, как вы можете решить подобные проблемы для себя в будущем.