请稍等 ...
×

采纳答案成功!

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

跳出递归的条件是l=arr.length,最后返回值是0,我疑惑的是的到的结果不是0而是数组的和

正在回答

1回答

liuyubobobo 2018-05-09 12:52:57

抱歉,我没有特别理解你的问题。


// 计算arr[l...n)这个区间内所有数字的和    
private static int sum(int[] arr, int l){    
    if(l == arr.length)    
        return 0;    
    return arr[l] + sum(arr, l + 1);    
}


这段函数的语意是计算arr[l...n) 这个区间的和。其中n == arr.length。当l也等于arr.length的时候,这段函数求的是arr[n, n)这个区间的数字和。这个区间里没有任何元素(注意:是前闭后开的),所以结果为0。

0 回复 有任何疑惑可以回复我~
  • 提问者 慕容9198694 #1
    看了后面的递归的微观解读,明白了自己的错误是把递归的执行顺序搞错了,以为return 0是最后一条语句,返回值就是是0,看了微观解读明白执行完return 0之后,在执行其他方法的语句。
    回复 有任何疑惑可以回复我~ 2018-05-09 13:01:44
  • liuyubobobo 回复 提问者 慕容9198694 #2
    赞!继续加油!
    回复 有任何疑惑可以回复我~ 2018-05-09 13:03:17
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信