首页 > 解决方案 > 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;
}

标签: c++recursion

解决方案


推荐阅读