#include <stdio.h>int summary(int n){ int sum; if(n==1) { sum = 1; } else { sum = n+summary(n-1);//在n=1时,sum=1,在n=2时,sum=2+summary(1),也就是说summary(1)就等于sum就等于1?感觉很不对诶! } return sum;}int main (){ int n = 100; printf("1+......+100的结果为%d\n:",summary(n)); return 0;}求大神解答....
3 回答
已采纳
CodeCode
TA贡献5条经验 获得超3个赞
”sum=2+summary(1),也就是说summary(1)就等于sum就等于1“
不要当成数学公式看,程序里的sum是个局部变量,每一次递归调用的sum都是不同的sum变量。关注一下变量的作用域。
凌小天3635910
TA贡献17条经验 获得超13个赞
假设n>0
summary(n)=n+summary(n–1)
=n+(n-1)+summary(n–2)
=n+(n–1)+(n–2)+…+3+summary(2)
=n+(n–1)+(n–2)+…+3+2+summary(1)
=n+(n–1)+(n–2)+…+3+2+1
=n(n+1)/2
递归总有一个基本条件用于判断递归原点,不然递归是无意义的。
- 3 回答
- 0 关注
- 1785 浏览
添加回答
举报
0/150
提交
取消