我运行此C ++代码,并在屏幕上显示“ ABACABA”。有人可以给我详细解释此示例中的递归调用如何工作吗?我不明白为什么我得到那个输出。
#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');
}
答案 0 :(得分:2)
char "C"
为"B"
。 C-- == B
char "B"
为"A"
。 B-- == A
为进行比较:
B>A
C>A
C>B
如果您再引入std::cout
作为
#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
我还建议您使用调试器执行类似的任务。