一)递归介绍
定义:
1、在函数体中直接或间接的调用自身的一种方法。
2、必须要有边界值,也就是停止的条件。
头递归:函数调用时不是传递本次计算的结果,而是把当前的调用状态传递,相当于要一直记录上一次函数的调用状态。这种方式会耗内存资源,当计算的值较大,递归层次较深时,容易报内存错误。
尾递归:函数调用时传递本次计算的结果,不需要记录函数的调用状态,由于一直是在尾部计算,大大减少了资源占用。
备注:递归也不是能无限计算下去的,只要是计算,就会有计算瓶颈限制。如果要一直计算,递归和死循环就差不多了。
二)递归案例
(一)计算球的反弹高度和总路径?
描述:一个球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
普通方式:h代表初始高度,n代表反弹次数
public static double fn(double h, int n) {
if