我对递归在此示例中的工作方式感到困惑。如果输入 'ABC\n',则输出 CBA。如果有人可以逐步完成该过程,我将不胜感激。
- 在main()中调用了ReverseLine()
本地自动 myInput 接收 'ABC\n'
然后它检查 myInput 中的 '\n' 和 EOF,这是我开始感到困惑的地方
我认为它说的是,A != '\n' 和 A != EOF 所以 ReverseLine() 被再次调用,但是然后呢???
递归是如何进行的,我只想了解一下过程
谢谢
using namespace std;
void ReverseLine(){
int myInput;
myInput = cin.get();
if (myInput != '\n' && myInput != EOF)
ReverseLine();
if (myInput != EOF)
cout.put(myInput);
}
int main(){
ReverseLine();
return 0;
}
最佳答案
当您调用 ReverseLine 时,它会读取一个字符。如果该字符不是换行符或 EOF,它会再次调用自己(递归)读取下一个字符,直到遇到换行符,此时它打印它刚刚读取的字符,然后返回到 ReverseLine 打印它读取的字符并依此类推,直到它返回到对 ReverseLine 的初始调用,打印读取的第一个字符,然后退出。
关于C++ 递归堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12762702/