- 第一件事,需要明确递归方法的功能。
比如说这个方法是要计算一个数的平方,是要计算两个数的和
- 第二件事,需要确定递归方法的停止条件
不能让递归无休止的调用下去,这样会造成内存溢出报错
- 第三件事,分解这个递归方法,不断缩小方法参数的范围,直到抵达停止条件。(寻找等价替代的关系表达式)
比如递归方法的作用是求取数列中的某一个数,这个数是由数列的前两个数相加而得
那么递归函数就可以由 func(i) 改为 func(i-1) + func(i-2)
递归实例一
打印数值,从10到1
思路:
-
这个方法的作用是将参数列表中的 i 打印出来
-
这个方法的停止条件是 i == 1的时候
-
这个方法的参数要不断缩小范围,这样才能抵达停止条件,那么就是 show( i ) ——> show( i - 1 )
package test.RecursionDemo;
public class Demo {
public static void main(String[] args) {
show(10);
}
public static void show(int i){
if(i==0){
System.exit(0);
}else{
System.