什么叫递归?
简单的说就是一个方法在它的方法体中又调用的它本身,列如:
public static void A(){
A();
}
请忽略上面的代码,只是讲述一下什么叫自己调用自己,上面的代码是有问题的。
下面开始真正的开始说明什么是递归,举俩个例子:一、斐波那契数列,二、阶层。
一、斐波那契数列:
所谓的斐波那契数列就是第三项,等于前俩项的和:a,b,c。c=a+b。
public class test{
public static void main(String[] args) {
System.out.println(Fibonacci(3));
}
public static int Fibonacci(int number){
if (number <= 0) {
return 0;
} else if (number == 1 || number == 2){
return 1;
} else if (number > 2) {
return Fibonacci(number - 2) + Fibonacci(number - 1);
}
return -1;
}
}
二、阶层:
所谓的阶层就是:n!= 1 x 2 x 3 x … (n-1) x n。
public class test{
public static void main(String[] args) {
System.out.println(stratum(3));
}
public static int stratum(int n){
if (n <= 0){
return 0;
} else if (n == 1){
return 1;
} else if (n >1){
return n * stratum(n - 1);
}
return -1;
}
}
注意:使用递归的话,递归头中必须要存在结束语句,也就是当不满足的时候一定要跳出的语句,不然会一直递归下去。
递归的缺点在于不停的调用自身方法,当调用次数少的时候还行,如果过多了,就会造成栈内存区域的压力。