递归
递归即方法自己调用自己,不建议频繁大量使用,简单但是使用不好可能会造成内存的溢出。
关于递归有以下两种组成形式:
第一种
- 递归头:停止自己调用自己的条件
- 递归体:自己调用自己
第二种
- 临界条件:停止自己调用自己的条件
- 递归前进段:自己调用自己直到临界条件的过程
- 递归后退段:从临界条件开始一直返回到最初调用处
例1:
//求5的阶乘
public class Recursion01{
public static void main(String[] haha){
System.out.println(rec(5));
}
//定义递归方法:求某个数的阶乘
public static int rec(int i){
//递归头:当i=1时停止调用,返回1
if(i==1){
return 1;
}
//递归体
return i*rec(i-1);
}
}
例2:
//n阶台阶,每次只能上一阶或两阶,请问n阶台阶有多少种上法
public class Recursion02{
public static void main(String[] args){
int a = upStair(10);
System.out.println("共有"+a+"种方法");
}
//定义递归方法
public static int upStair(int n){
//递归头:当n=1时返回1种方法,当n=2时返回2种方法
if(n==1){
return 1;
}else if(n==2){
return 2;
}
//递归体:上第n阶台阶的方法等于上第n-1阶台阶的方法加上上第n-2阶台阶的方法
return up(n-1) + up(n-2);
}
}