递归
概念:递归是调用方法的一种方式
在Java语言中,方法自己调用自己就是递归
递归的特点
-
如果想要实现递归,该方法需要有两条分支:
- 第一条分支是方法调用自己的分支,是为了逐渐的解决问题
- 第二条分支是为了结束自己的分支,为了防止方法的无限调用
-
使用递归的好处:通过一些简单代码,完成复杂的逻辑
-
**缺点:**耗费内存。如果多次调用方法,有可能会出现栈内存溢出异常
-
图示:
案例
递归案例:斐波那契数列
1、观察如下数列的规律,使用递归的方式获取第20个值应该是多少?
1 , 1, 2,3 ,5 ,8 ,13 ,21 ,34 ,55 … (斐波那契数列)
利用规律:前两个数相加的和是下一个数
public class feibonaqie {
public static void main(String[] args) {
System.out.println(getNum(20));
}
public static int getNum(int n){
if (n==1 || n==2){
return 1;
}else return getNum(n-1)+getNum(n-2);
}
}
递归案例2:
1、定义一个方法,求出n的m次方
n和m当作参数传给方法,根据传入的n和m的值返回对应的结果
public class Digui_exercise {
public static void main(String[] args) {
int s=getNum(2,3);
System.out.println(s);
}
public static int getNum(int n,int m){
if (m==1){
return n;
}else if (m==0){
return 1;
}else {
return n*getNum(n,m-1);
}
}
}
return n*getNum(n,m-1);
}
}
}