#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 關注
- 1859 瀏覽
添加回答
舉報
0/150
提交
取消