今天学习了下递归,但是很懵,有没有大神来指点下;能不能解释下是怎么运行的?谢谢! #include <stdio.h> int fun(int x) { if(x>1) return x+fun(x-1); else return x; } int main() { int sum; sum=fun(100); printf("sum=%d\n",sum); }
![]() | 1 whoami9894 2018-09-18 23:06:11 +08:00 via Android x=5 返回 5+fun(4) fun(4)=4+fun(3) fun(3)=3+fun(2) fun(2)=2+fun(1) fun(1)=1 sum=5+4+3+2+1 |
2 GeruzoniAnsasu 2018-09-18 23:47:38 +08:00 递归 C/C++/Obj-C Zzzp 40 分钟前 最后回复来自 whoami9894 1 c 语言 C/C++/Obj-C Zzzp 14 小时 51 分钟前 最后回复来自 FrankHB 29 数组 C/C++/Obj-C Zzzp 42 天前 最后回复来自 V3EX17 9 用 switch 比较两个数的大小 问与答 Zzzp 58 天前 最后回复来自 chengyiqun 2 C 语言 C/C++/Obj-C Zzzp 61 天前 最后回复来自 jzq526 15 |
3 Justin13 2018-09-19 08:38:55 +08:00 via Android 替代法,用函数体替换函数调用,一步步理解 |
![]() | 4 hahaDK 2018-09-19 08:58:57 +08:00 via iPhone 多画画图 就能理解了 |
![]() | 5 xiri 2018-09-19 09:09:13 +08:00 via Android ![]() 看了下楼主所有的主题,我不想说啥了,,,,,, |
6 zhangyichent 2018-09-19 09:13:41 +08:00 先别用 100 嘛,可以用 2/3/4/5 这种比较小的数先在纸上算一遍嘛,然后规律不自然就出来了 |
7 Chenamy2017 2018-09-19 09:20:46 +08:00 div class="reply_content">实际上就是函数的嵌套调用,楼上说的对,用 2/3/4 这种小数字在纸上把函数调用走一边就好了 |
8 fighterlyt 2018-09-19 10:46:30 +08:00 程序员需要有数据基础,递归在逻辑上等价于**数学归纳法** |
![]() | 9 fyyz 2018-09-21 11:56:40 +08:00 开个单步调试追踪一下就能看懂了,其实很简单的 |