有点乱,仅作记录用.[递归的执行有点让我不明所以,所以参考了下面的地址内容写下自己的理解]
(1) getSum(5)传入的 x 值为 5 .
(2) 5 传入后执行第二个 return 结果是: 5 + getSum(4);[这个结果挂起,先不执行]
代码先不计算,执行getSum(4); 结果是: 4 + getSum(3);[挂起];执行 getSum(3);结果是: 3 + getSum(2);[挂起];执行getSum(2);结果是: 2 + getSum(1);[挂起];执行getSum(1);这个时候执行第一个return,返回的结果是 1;这个时候挂起的才开始输出:2 + getSum(1)为 2 + 1;3 + getSum(2);为3 + 2 + 1;4 + getSum(3);为4 + 3 + 2 + 1;5 + getSum(4);为5 + 4 + 3 + 2 + 1;最终结果 15;[也就是开始执行挂起的那个值].
(3) 我开始看链接的内容时不能理解5 + getSum(4);为什么就是5 + 4 + 3 + 2 + 1了?我目前的理解就是5不变,然后执行getSum(4)[结果是: 4 + getSum(3);],所以5 + 4加的4应该就是getSum(4)结果里前面不变的那个4,一直这样走下去.这样理解的话就知道为什么是5 + 4 + 3 + 2 + 1了.
(4) 理解可能有误,仅作记录用.