今天学习了下递归,但是很懵,有没有大神来指点下;能不能解释下是怎么运行的?谢谢! #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 1
看了下楼主所有的主题,我不想说啥了,,,,,,
|
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
实际上就是函数的嵌套调用,楼上说的对,用 2/3/4 这种小数字在纸上把函数调用走一边就好了
|
8
fighterlyt 2018-09-19 10:46:30 +08:00
程序员需要有数据基础,递归在逻辑上等价于**数学归纳法**
|
9
fyyz 2018-09-21 11:56:40 +08:00
开个单步调试追踪一下就能看懂了,其实很简单的
|