kbhao7788
kbhao7788
采纳率19.8%
2017-02-13 01:12 阅读 2.7k

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条回答 默认 最新

  • 已采纳
    tutuxs Xefvan 2017-02-13 02:31
     ------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;       // 退出
    
    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-02-13 01:46
     函数永远在执行完之后返回它的调用者。递归也不例外。递归只是自己调用自己而已。
    对于外侧的repeat函数来说,内侧的repeat(--m);调用完,自然执行后面的cout<<m<<endl;
    
    点赞 评论 复制链接分享

相关推荐