为什么return的时候没有跳出函数?

来源:5-3 递归基础与递归的宏观语意

alexnest3882392

2018-05-12

package imooc;

public class Sum {

	public static int sum(int[] array){
		return sum(array,0);
	}
	
	public static int sum(int[] array , int l){
		if(array.length == l){
			return 0;
		}
		
		return array[l] + sum(array , l + 1);
	}
	
	public static void main(String[] args) {
		int[] array = {1,2,3,4,5,6,7,8};
		System.out.println(sum(array));
	}
}

调试的时候当l=8,的确跑到了return 0,这时候不是应该跳出函数了吗?为什么还继续往下执行想不明白

写回答

1回答

liuyubobobo

2018-05-12

return 0以后,跳到了递归的上一层调用,执行上层调用的return array[l] + sum(array , l + 1);


请继续看课程后续递归的微观运行机制讲解,回来再看这个问题,就明白了:)

0
1
alexnest3882392
非常感谢!
2018-05-12
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程