首页 > 解决方案 > 为什么我的递归函数按降序打印,然后按升序打印?

问题描述

我有一个简单的递归c++程序,我试图准确地理解它是如何工作的。我明白程序为什么会打印出来3 2 1,但后来我不明白为什么它会反过来打印1 2 3。我使用了手动模拟并逐步完成了程序,但仍然不明白它1 2 3是如何产生的。我从 GeeksForGeeks找到了这篇文章,但仍然难以理解这个概念。任何解释都会很棒。

#include <iostream>

using namespace std;

void test(int n)
{
  if (n > 0)
  {
    cout << n << " ";
    test(n - 1);
    cout << n << " ";
  }
}

int main()
{
  test(3);
  return 0;
} 

标签: c++

解决方案


递归中的函数调用顺序如下所示:

test(3)
-- cout << 3 << " ";
-- test(2)
-- -- cout << 2 << " ";
-- -- test(1)
-- -- -- cout << 1 << " ";
-- -- -- test(0)
-- -- -- cout << 1 << " ";
-- -- cout << 2 << " ";
-- cout << 3 << " ";

推荐阅读