c++ - 为什么我的递归函数按降序打印,然后按升序打印?
问题描述
我有一个简单的递归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;
}
解决方案
递归中的函数调用顺序如下所示:
test(3)
-- cout << 3 << " ";
-- test(2)
-- -- cout << 2 << " ";
-- -- test(1)
-- -- -- cout << 1 << " ";
-- -- -- test(0)
-- -- -- cout << 1 << " ";
-- -- cout << 2 << " ";
-- cout << 3 << " ";
推荐阅读
- php - 分别获取 Woocommerce 中每个购物车和订单商品的税率
- java - 如何使用 java 中的远程桌面访问本地文件(或)如何使用 java 中的远程桌面服务器在本地 pc 中打开文件夹?
- mysql - SQL插入选择依赖于其他表
- c# - 如何在单个节点中获取 XML 标记
- katalon-studio - 存储过程的 Katalon Studio 数据库检查点不起作用
- regex - Flex 中的正则表达式错误
- javascript - 解构对象在属性名称中具有连字符
- python - 将数据框与 dict 值一起使用时出现 Pandas 错误
- python - 如何在张量流中并行加载数据?
- javascript - 无法使用 NetBeans 将 JavaScript 加载到 Node.js 中的 HTML 页面