正在回答 回答被采纳积分+1
5回答
好帮手慕久久
2021-06-09 18:03:04
同学你好,解答如下:
想求1-100的和,除了正着计算(1+2+3+...+100)外,还可以倒着计算(100+99+98+...+1),我们这里采取的就是倒着计算。
补充说明:“正着计算”就是从1开始,再加上2......,最终加到100;“倒着计算”就是从100开始,然后加99...,最后加到1。
代码执行过程如下:
首先调用num方法,并传入参数100:
在num方法内部,由于n不是1,不满足if的条件,所以会执行return n + num(n - 1):
即num(100)=100+num(99),含义就是前100个数的和=100+前99个数的和:
而num(99)会继续调用num方法,得到num(99)=99 + num(98),含义是num(99)=99+前98个数的和。
将num(99)的值带回到num(100)会得到num(100)=100+99+num(98)。
依次类推,num(100)=100+99+...+2+num(1)。
而num(1)会得到1:
此时num(100)就等于100+99+...+2+1,到此就求出来了100-1的和。
之所以倒着计算,是因为我们知道num(1)=1,利用num(1)=1结合“倒着计算”,能够终止递归(终止计算过程)并得到具体的值。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星