void函数中的递归调用 我运行这个C++代码,它在屏幕上打印Abababa。有人能给我详细说明递归调用在这个例子中的作用吗?我不明白为什么我会得到那样的结果 #include <iostream> using namespace std; void f( char c) { if (c > 'A') f(c-1); cout << c; if (c > 'A') f(c-1); } int main() { f('C'); } 递减的ansi字符C为B.C-==B 递减的ansi字符B为A.B-==A
作为比较: B> A C> A C> B 我认为如果引入第二个std::cout as,可以更好地遵循逻辑void函数中的递归调用 我运行这个C++代码,它在屏幕上打印Abababa。有人能给我详细说明递归调用在这个例子中的作用吗?我不明白为什么我会得到那样的结果 #include <iostream> using namespace std; void f( char c) { if (c > 'A') f(c-1); cout << c; if (c > 'A') f(c-1); } int main() { f('C'); } 递减的ansi字符C为B.C-==B 递减的ansi字符B为A.B-==A,c++,recursion,C++,Recursion,作为比较: B> A C> A C> B 我认为如果引入第二个std::cout as,可以更好地遵循逻辑 我还建议您使用调试器来执行类似的任务。使用调试器,或纸笔调试器。您有可以单步执行的调试器吗?或者在笔记本上画画?f'a'是什么?对于f'B',最后是f'C',我不明白cout后面的那一行是做什么的。我的意思是调用的顺序函数是什么?我已经丰富了你的代码:。这有帮助吗?学究式的“A”+1不能保证是“B”。适用于ansi和EBCDIC。 #include <iostream> vo
我还建议您使用调试器来执行类似的任务。使用调试器,或纸笔调试器。您有可以单步执行的调试器吗?或者在笔记本上画画?f'a'是什么?对于f'B',最后是f'C',我不明白cout后面的那一行是做什么的。我的意思是调用的顺序函数是什么?我已经丰富了你的代码:。这有帮助吗?学究式的“A”+1不能保证是“B”。适用于ansi和EBCDIC。
#include <iostream>
void f(char c) {
std::cout << " start " << c << "\n";
if (c > 'A')
f(c - 1);
std::cout << c;
if (c > 'A')
f(c - 1);
}
int main() {
f('C');
return 0;
}
start C
start B
start A
AB start A
AC start B
start A
AB start A
A