| 网站首页 | 业界新闻 | 小组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
ADSL如何秒变专线,公网IP盒子了解一下千里之行 始于足下
共有 571 人关注过本帖
标题:关于递归,不解!
只看楼主 加入收藏
a75692074
Rank: 1
等 级:新手上路
威 望:1
帖 子:47
专家分:0
注 册:2018-7-20
结帖率:100%
  已结贴   问题点数:20  回复次数:5   
关于递归,不解!
程序代码:
#include <iostream>
using namespace std;

void countdown(int n);

int main()
{
    countdown(4); // 调用递归函数
    return 0;
}

void countdown(int n)
{
    cout << "Counting down ... " << n << endl;
    if (n > 0)
        countdown(n - 1); // 函数调用本身
    cout << n << ": Kaboom!\n";
}


为什么会输出如下:
Counting down ... 4
Counting down ... 3
Counting down ... 2
Counting down ... 1
Counting down ... 0
0: Kaboom!
1: Kaboom!
2: Kaboom!
3: Kaboom!
4: Kaboom!

有点懵,求解!
搜索更多相关主题的帖子: 递归 down int 函数 cout 
2019-01-14 23:09
Jonny0201
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:45
帖 子:468
专家分:2370
注 册:2016-11-7
  得分:10 
建议你把 countdown 手动展开
或者手动计算这个递归
应该差不多就能理解了
2019-01-14 23:59
ZJYTY
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:88
专家分:658
注 册:2018-12-20
  得分:10 
countdown(4)(未返回)->调用countdown(3)(未返回)->调用countdown(2)(未返回)->调用countdown(1)(未返回)->调用countdown(0)(返回到countdown(1))
->countdown(1)(返回到countdown(2))->countdown(2)(返回到countdown(3))->countdown(3)(返回到countdown(4))->countdown(4)(返回到main())


可以单步调试一下,看看程序如何运行。

[此贴子已经被作者于2019-1-15 09:46编辑过]


-------------------------------若有不当之处,敬请谅解-------------------------------
2019-01-15 09:45
a75692074
Rank: 1
等 级:新手上路
威 望:1
帖 子:47
专家分:0
注 册:2018-7-20
  得分:0 
回复 3楼 ZJYTY
好的,谢谢
2019-01-15 12:16
a75692074
Rank: 1
等 级:新手上路
威 望:1
帖 子:47
专家分:0
注 册:2018-7-20
  得分:0 
回复 2楼 Jonny0201
好的呗,谢谢啦
2019-01-15 12:16
lyb661
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:18
帖 子:47
专家分:83
注 册:2018-12-12
  得分:0 
也可以当成一个堆栈stack来理解:压入栈中的依次是4.3.2.1.0,由于出栈的规律是“后进先出”,所以弹出栈的依次是0.1.2.3.4。
2019-01-16 02:11







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026396 second(s), 8 queries.
Copyright©2004-2019, BCCN.NET, All Rights Reserved