#include <iostream>
using namespace std;
void palindrome(char *s){
if (s[1] == 0)
{
return;
}
cout << s[0];
palindrome(++s);
cout << s[0];
}
int main(){
char s[30]="foobar";
palindrome(s);
cout << endl;
}
cstringを回文に変換する再帰関数を作成する必要があります。これは宿題に関する質問であり、修正できる唯一のコードは回文関数の中にある。このコードはほとんど動作します。問題は「foobaraboo」を返し、最後の文字を残すことです。正しい方向で私を指すヒントはありますか?私はしばらくの間、コードを使って遊んできたので、それを変更する方法を考え出すことができないので、回文の最後の文字が表示されます。C++ Palindrome Creator再帰プログラム
であるあなたは、あなたのIDEで、デバッガで遊んでいましたか?ステップを進めて、単語の最後に何が起こるかを見てください。 – nicomp
++ sはsが指している場所を変更します。それをトレースすると、2番目のs [0]は 'f'の代わりに 'o'を表示します。あなたはおそらく、s + 1と++を必要としません。 – user222031