Java从入门到项目实战(全程视频版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

4.3 方法递归调用

img

递归调用是一种特殊的调用形式,指的是方法自己调用自己的形式,如图4-3所示,但是在进行递归操作的时候必须满足以下的几个条件。

img递归调用必须有结束条件。

img每次调用的时候都需要根据需求改变传递的参数内容。

img

图4-3 递归调用

提示:关于递归的学习。

递归调用是迈向数据结构开发的第一步,但是如果读者要真想掌握熟练递归操作,那么需要大量的代码积累。换个角度来讲,在应用层项目开发上一般很少出现递归操作,因为一旦处理不当则会导致内存溢出问题的出现。

范例:实现1~100数字的累加

img
img

本程序使用递归的操作进行了数字的累加操作,并且当传递的参数为1时,直接返回为一个数字1(递归调用结束条件),本程序的操作分析如下。

img【第1次执行sum()、主方法执行】return 100 + sum(99)。

img【第2次执行sum()、sum()递归调用】return 99 + sum(98)。

img

img【第99次执行sum()、sum()递归调用】return 2 + sum(1)。

img【第100次执行sum()、sum()递归调用】return 1。

最终执行的效果就相当于:return 100 + 99 + 98 + … + 2 + 1(if结束条件),本程序的执行流程如图4-4所示。

img

图4-4 方法递归调用

范例:计算1!+ 2!+ 3!+ 4!+ 5!+ …+ 90!

img
img

本程序实现了指定数据范围阶乘的计算,由于阶乘的数值较大,所以本程序使用了double数据类型进行最终计算结果的保存,本程序的执行流程如图4-5所示。

img

图4-5 递归计算阶乘