方法递归
就是在一个方法里调用本方法的操作叫递归(自己调用自己)
一般递归都有参数用来控制循环防止一直递归
public void test(int n)
{
if(n>2){
test(n-1)
}
System.out.println("n="+n);
}
test(4)
test(4)调用
在我之前的java方法调用机制的里面有提到
方法是创建独立栈区域,然后再进行操作
test(4)
创建一个独立栈(这里用4栈命名吧)
4栈执行到test(n-1)
又创建一个独立栈执行test(3) //称为3栈
同理啊3栈会创建一个独立2栈
最后2栈执行
System.out.println("n="+2);
然后返回3栈内因为2栈执行完了,所以3栈向下运行
同样输出
n=3
3栈执行完回到4栈
4栈执行完最后一条语句
n=4
最后所有的方法执行完,回到main方法继续执行下面的语句
如图
java递归斐波那契数组
前两个是1 1之后每个数都是前两个数字之和的数组
1 1 2 3 5 8 13.......
实现给你一个n,让你输出数组的第n个值
package object;
public class Method {
public static void main(String[] args) {
System.out.println(s(5));//以5为例
}
public static int s(int n) {
if(n==1||n==2)//结束条件
{return 1;}
else{
return s(n-1)+s(n-2);//递归
}
}
}
当你需要前面的,但是又不能灵活调用,可能就要使用到递归(重复操作)
再看一道猴子吃桃问题
规律 前一天=后面一天+1后*2
递归求前面天数
10时为1
9时是1+1=2*2=4
看到重点是找规律每两个数相邻之间的规律
还有确定一个(多个)已知数(这个数一般当做参数)
来做结束条件
if(条件)
{return 已知值;
}
else
return 规律;规律里面一般用到递归