| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1888 人关注过本帖
标题:关于递归,不解!
只看楼主 加入收藏
a75692074
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分: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: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:52
帖 子:488
专家分:2603
注 册:2016-11-7
收藏
得分:10 
建议你把 countdown 手动展开
或者手动计算这个递归
应该差不多就能理解了
2019-01-14 23:59
ZJYTY
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:4
帖 子:92
专家分:700
注 册: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
帖 子:48
专家分:0
注 册:2018-7-20
收藏
得分:0 
回复 3楼 ZJYTY
好的,谢谢
2019-01-15 12:16
a75692074
Rank: 1
等 级:新手上路
威 望:1
帖 子:48
专家分:0
注 册:2018-7-20
收藏
得分:0 
回复 2楼 Jonny0201
好的呗,谢谢啦
2019-01-15 12:16
lyb661
Rank: 5Rank: 5
等 级:贵宾
威 望: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.031832 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved