c++ - C++ 双重递归
问题描述
你好,我最近对我的代码有些好笑,我遇到了双重递归的奇怪输出。我试图理解它,但我还没有那么幸运知道答案。也许你会帮我解决这个问题。为什么这个程序有这么奇怪的输出?输出:4 3 2 1 1 2 1 1 3 2 1 1 2 1 1。我发现首先它只是执行第一个 somefunc 调用,所以打印 4321,下一个 somefunc 的输出类似于 1234。首先它减 1,所以它的 0 下一个减 2减 1 所以它的 1 然后减 3 减 1 它的 2 和 1 减 4 减 1 直到 0 所以它的 321 它的逻辑输出将是 4321 2 1 3 2 1 但我不明白其余的。
#include <iostream>
using namespace std;
void somefunc(int c)
{
if(c>=1)
{
cout <<c<<" ";
somefunc(c-1);
somefunc(c-1);
}
}
int main()
{
somefunc(4);
return 0;
}
解决方案
推荐阅读
- vuejs2 - 无法从使用 npm 安装的包中访问功能
- java - Android GPU渲染速度慢的问题
- survey - 使用 Svyciprop 获得两个变量的 CI 流行率
- javascript - 如何将第一个 API 调用的返回值用作第二个 API 调用的参数?
- javascript - Bookshelf.js:避免调用保存(更新)后的获取调用
- macos - 沙盒 Mac 应用程序和插件之间的进程间通信
- dpdk - DPDK 中的 MultiQ 是配置“max_rx_queue=1”问题
- javascript - 无法在服务端使用 Spring Boot 设置 cookie
- node.js - 在云函数中进行多个 Firestore 查询
- javascript - 在角度的ngx-mat-datetime-picker中设置默认分钟?