void函数中的递归调用

时间:2018-07-23 15:18:53

标签: c++ recursion

我运行此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');
}

1 个答案:

答案 0 :(得分:2)

  • 减小的ansi char "C""B"C-- == B
  • 减小的ansi 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

我还建议您使用调试器执行类似的任务。