递归方法(Recursion)
- 递归:指在当前方法内调用自己的这种现象。
- 递归的分类:
- 递归分为两种,直接递归和间接递归。
- 直接递归称为方法自身调用自己。
- 间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。
- 注意事项:
- 递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
- 在递归中虽然有限定条件,但是递归次数不能太多。否则也会发生栈内存溢出。
实例:
public class Recursion {
//打印3次 Hello,world
public void test(int n){
if (n == 0){
return;
}else{
System.out.println("Hello, world");
test(n - 1);
}
}
//计算1-100之间所有自然数的和
public int sum(int n){
if(n == 1){
return 1;
}else {
return n + sum(n - 1);
}
}
//求n的阶乘
public int multi(int n){
if(n == 1){
return 1;
}else{
return n * multi(n - 1);
}
}
int total = 0;
//计算Fibonacci数列的第n个值
public int fibonacci(int n){
total++;
if(n <= 1){
return 1;
} else{
return fibonacci(n-2) + fibonacci(n-1) ;
}
}
}