大学のノートでCの文字列を逆にする次のコードを見つけました。私には魔法のように見えるので、この例で再帰がどのように機能するのかわかりません。具体的には、「one」という単語を入力すると、プログラムは「eno」という単語を出力します。説明によると、この関数は、ユーザーがEnter('\ n')を押すまでユーザーから文字を再帰的に読み取り、反転した単語を出力します。しかし、関数が最後に再帰的に自分自身を呼び出すのが、ユーザーがEnterキーを押したときであり、その後、プログラムがprintfを呼び出すために関数に再び入ることができない場合、どのように単語を印刷できますか?ある種のバッファを使用しますか?それはどのように機能しますか?Cのソースコードは次のとおりです。
#include <stdio.h>
void readCharsAndReverse(void);
int main (void)
{
printf ("Give characters to reverse:");
readCharsAndReverse();
printf ("\n\n");
system("PAUSE");
}
void readCharsAndReverse(void)
{
char ch;
scanf ("%c", &ch);
if (ch != '\n')
readCharsAndReverse();
printf ("%c", ch);
}