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

递归代码详解

getWordNumber(n - 1) + n - 1,这段代码没理解

正在回答

3 回答

这是返还给  getWordNumber(1)的值,就是return 1   将1返还到getWordNumber(1)中。

例:

abc(5)=abc(4)+n

abc(4)=abc(3)+n

abc(3)=abc(2)+n

abc(2)=abc(1)+n

abc(1)=1

然后返换,先计算最后一个

abc(1)等于1

倒数第二行

abc(2)=abc(1)+n  等于  abc(2)=1+ 2 =3

倒数第三行

abc(3)=abc(2)+n  等于  abc(3)= 3+3 =6      第一个3是abc(2)的值 , 第二个3是n的值,就是abc(n-1)中n的值,abc(3)=abc(2)+3  

倒数第四行

abc(4)=abc(3)

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

sca11

倒数第四行没写全。。后面的也没写了。。 应该都看得懂了吧
2015-08-03 回复 有任何疑惑可以回复我~

1+1+2+3+4+5+6+7+8+9

return getWordNumber(n-1)+n-1

表示getWordNumber(n)比getWordNumber(n-1)多了个+n-1

getWordNumber(n-1) - getWordNumber(n-1) = n-1


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

sca11

你理解错了,少年。 getWordNumber(n-1)+n 其中(n-1)是参数 +n 是上一层的内容。 getWordNumber(2-1)等价于getWordNumber(1) 将1的值赋给getWordNumber(n) 此时n的值为1。 执行getWordNumber(n) if语句判断 此时n等于1 所以执行 return 1 将1 返还到getWordNumber(1)中。 1+2+3+4+5+6+7+8+9+10 刚好55
2015-08-03 回复 有任何疑惑可以回复我~

getWordNumber(n-1)是递归方法的运用,递归调用函数getWordNumber(),并每次计算前一天的单词量,把过程写成数学过程就形成了:(((((1)+2)+3)+...+(n-2))+n-1。即从最后一天的前一天(n-1)开始记录,一直到第一天为止。

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

举报

0/150
提交
取消
C语言入门
  • 参与学习       926019    人
  • 解答问题       20793    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程

递归代码详解

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