我写了一个1+.....+100的递归函数但是n在1,2处有些不明白,求前辈们帮助?

#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;
}


求大神解答....

梦在彼方
浏览 1786回答 3
3回答

CodeCode

”sum=2+summary(1),也就是说summary(1)就等于sum就等于1“不要当成数学公式看,程序里的sum是个局部变量,每一次递归调用的sum都是不同的sum变量。关注一下变量的作用域。

凌小天3635910

假设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 递归总有一个基本条件用于判断递归原点,不然递归是无意义的。

精慕门9179926

看晕了。快带我去医院
打开App,查看更多内容
随时随地看视频慕课网APP