为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C C# C++
梦在彼方 2016-08-18 22:35:16
#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变量。关注一下变量的作用域。

查看完整回答
1 反对 回复 2016-08-19
?
凌小天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

递归总有一个基本条件用于判断递归原点,不然递归是无意义的。

查看完整回答
1 反对 回复 2016-08-19
?
精慕门9179926

TA贡献4条经验 获得超3个赞

看晕了。快带我去医院

查看完整回答
反对 回复 2016-09-23
  • 3 回答
  • 0 关注
  • 1785 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信