c++ 递归函数的返回上一层怎么解释

#include
using namespace std;
int repeat(int m)
{
cout << m;
if (m>1)
{

    repeat(--m);
    cout << m << endl;
    m--;
}
return 1;

}
int main()
{

int h = 5;
repeat(h);

}

递归到终 repeat()函数有return1 返回到repeat(--m) repeat(--m)有return 1
为什么不返回repeat(int m) 而是向下走 求详细的答案谢谢

2个回答

 ------Start------
    |repeat(5)
    |---cout << 5;
    |---repeat(4)
    |   |---cout << 4;
    |   |---repeat(3)
    |   |   |---cout << 3;
    |   |   |---repeat(2)
    |   |   |   |---cout << 2;
    |   |   |   |---repeat(1)
    |   |   |   |   |---cout << 1;
    |   |   |   |   |---return 1;   // 退出
    |   |   |   |---cout << 1 << endl;
    |   |   |   |---m--;
    |   |   |   |---return 1;       // 退出
    |   |   |---cout << 2 << endl;
    |   |   |---m--;
    |   |   |---return 1;           // 退出
    |   |---cout << 3 << endl;
    |   |---m--;
    |   |---return 1;       // 退出
    |---cout << 4 << endl;
    |---m--;
    |---return 1;       // 退出
tutuxs
Xefvan 回复kbhao7788: 就好比repeat(1)这里面的return 1; 他退出也只是repeat(1)这个函数退出了,从里面跳到了外面,接着执行下面的语句
2 年多之前 回复
kbhao7788
kbhao7788 退出这里看不懂
2 年多之前 回复
tutuxs
Xefvan 回复kbhao7788: 你从上面往下看呗,一步一步的
2 年多之前 回复
kbhao7788
kbhao7788 看不懂
2 年多之前 回复
kbhao7788
kbhao7788 他说写错了
2 年多之前 回复
zzhao114
zzhao_曌 这个够详细啊!
2 年多之前 回复
kbhao7788
kbhao7788 教我下大神
2 年多之前 回复
kbhao7788
kbhao7788 不懂
2 年多之前 回复
tutuxs
Xefvan 回复kbhao7788: 你既然看出来哪里错了?那这题你应该也懂了
2 年多之前 回复
kbhao7788
kbhao7788 那你重新写一下 错了
2 年多之前 回复
tutuxs
Xefvan 回复Xefvan: 没错,自己眼瞎了
2 年多之前 回复
tutuxs
Xefvan 错了,别看
2 年多之前 回复
 函数永远在执行完之后返回它的调用者。递归也不例外。递归只是自己调用自己而已。
对于外侧的repeat函数来说,内侧的repeat(--m);调用完,自然执行后面的cout<<m<<endl;
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!