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

C语言入门--关于递归函数

第二次调用为什么会跟第一次的值不一样呢?总想不明白。又没有n-1=n

正在回答

2 回答

第一次调用时n=10,就会return getWordNumber(n-1)+n,也就是getWordNumber(10-1)+10;

而getWordNumber(10-1)返回的是getWordNumber(9-1)+9;

...一直往下减

getWordNumber(2)返回getWordNumber(2-1)+2;

getWordNumber(1)返回1;

所以getWordNumber(10)就等于:

getWordNumber(1)+2+3+4+5+6+7+8+9+10=55.返回什么可以直接用返回值替换原来的式子,就容易看明白了!

1 回复 有任何疑惑可以回复我~
#1

qq_照遍天宇_04160908 提问者

可是原来的(10)为什么会被(10-1)替换呢?
2016-10-22 回复 有任何疑惑可以回复我~
#2

qq_照遍天宇_04160908 提问者

非常感谢!
2016-10-22 回复 有任何疑惑可以回复我~
#3

C_plus 回复 qq_照遍天宇_04160908 提问者

因为函数里面递归的时候参数是n-1啊,传进去的是10,出来的时候就是10-1啦。这个递归的原理就是今天会的单词都是昨天会的加上今天学的,那么昨天会的又是前天会的加上昨天学的,以此类推,每天会的都是前一天加上当天学会的,所以要算某一天会的单词量,就得算出前一天会的,所以每次参数都会减一。
2016-10-22 回复 有任何疑惑可以回复我~
#4

qq_照遍天宇_04160908 提问者 回复 C_plus

第一次调用的时候我理解,是n-1,因为n已经定义为10了所以是10-1,但第二次我就不明白了,n定义的明明是10,为什么第二次n-1就变成了9-1??!!,n定义的明明是10啊,这里面又没有n=n-1之类 的。
2016-10-23 回复 有任何疑惑可以回复我~
查看1条回复

   getWordNumber(10)

=getWordNumber(9)+10

=(getWordNumber(8)+9)+10

=((getWordNumber(7)+8)+9)+10

。。。。。。

=getWordNumber(1)+2+3+···+9+10

=1+2+3+···+9+10

=55


2 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

C语言入门--关于递归函数

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信