采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
课程中有两个return, 第一个return,当l是arr.length时,就返回0,这个确实可以理解 因为最后一个元素救是arr.length-1;
第二个return,就是求和了。
考虑一下临界情况,当第二个return加到 sum(0)的时候,数组就可以有计算结果了。但是此时还有一个 return0的存在。那么到底给主函数返回的是0还是sum和呢
根据传入的l的不同,走不同的return。
带入一个含有两个元素的数组,debug单步跟踪试试看,仔细理解一下在什么时候走哪个return,有是怎么一步一步求出一个数组的所有元素的和的:)
建议:结合课程5-5的讲解,仔细理解清楚递归函数的每一步执行过程。
加油!:)
波哥 我理解了,我现在才反应过来,那个return 0 是在传入空数组的情况下才会执行,而非空情况 根本不会执行那个条件。 波哥 是这样的吗
不一定传入的是空。传入的arr不是空的情况下,由于递归的过程,参数l在逐渐增大,当增大到l == arr.length的时候,也会出发return 0:)
上面的return是结束递归,开始回推 下面的return是继续递归 递归算法有一个临界点,当到达临界点的时候,就不再递归了
登录后可查看更多问答,登录/注册
动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…
10.0k 16
1.2k 17
1.1k 14
987 14