请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

return到最后 到底return的是0 还是retuen的总和

课程中有两个return,
第一个return,当l是arr.length时,就返回0,这个确实可以理解 因为最后一个元素救是arr.length-1;

第二个return,就是求和了。

考虑一下临界情况,当第二个return加到 sum(0)的时候,数组就可以有计算结果了。但是此时还有一个 return0的存在。那么到底给主函数返回的是0还是sum和呢

正在回答

1回答

liuyubobobo 2019-01-11 08:59:26

根据传入的l的不同,走不同的return。


带入一个含有两个元素的数组,debug单步跟踪试试看,仔细理解一下在什么时候走哪个return,有是怎么一步一步求出一个数组的所有元素的和的:)


建议:结合课程5-5的讲解,仔细理解清楚递归函数的每一步执行过程。


加油!:)

0 回复 有任何疑惑可以回复我~
  • 提问者 玉滨123 #1
    波哥 我理解了,我现在才反应过来,那个return 0 是在传入空数组的情况下才会执行,而非空情况 根本不会执行那个条件。
    波哥 是这样的吗
    回复 有任何疑惑可以回复我~ 2019-01-11 09:33:04
  • liuyubobobo 回复 提问者 玉滨123 #2
    不一定传入的是空。传入的arr不是空的情况下,由于递归的过程,参数l在逐渐增大,当增大到l == arr.length的时候,也会出发return 0:)
    回复 有任何疑惑可以回复我~ 2019-01-11 09:52:40
  • 提问者 玉滨123 回复 liuyubobobo #3
    上面的return是结束递归,开始回推
    下面的return是继续递归
    递归算法有一个临界点,当到达临界点的时候,就不再递归了
    回复 有任何疑惑可以回复我~ 2019-01-11 10:12:00
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信