递归:
在方法内部调用方法本身
注意:
1、递归调用必须要有出口,否则就会产生死循环递归,内存溢出
2、递归的次数不宜过多,过多容易产生内存溢出
3、构造方法不能递归调用
代码示例:
/*
* 需求:用递归求下列数列的第二十项的值:
* 1,1,2,4,7,13,24...
*
*找出口:出口就是前三项 1 1 2
*找规律:从第四项开始,值是前三项的和
*
* 先确定递归方法返回值类型 int
* 确定递归方法的参数类型 int
*
* getName(20)=getName(19)+getName(18)+getName(17)
*
*/
public class DiGuiTest {
public static void main(String[] args) {
System.out.println(getNum(20));
}
public static int getNum(int count) {
if (count == 1 || count == 2) {
return 1;
} else if (count == 3) {
return 2;
} else {
return getNum(count - 1) + getNum(count - 2) + getNum(count - 3);
}
}
}
/**
* 递归调用
* 输入一个数的阶乘
* 规律:n!=n*(n-1)!
* @author zsk
*
*/
public class NumDemo {
public static void main(String [] args){
//创建Scanner对象
Scanner input=new Scanner(System.in);
int num=input.nextInt();
int sum=getSum(num);
System.out.println(sum);
}
//求阶乘函数
public static int getSum(int num){
if(num==1){
return 1;
}else{
return num*getSum(num-1);
}
}
}