-
-
递归的分类:
-
递归分为两种,直接递归和间接递归。
-
直接递归称为方法自身调用自己。
-
间接递归可以A方法调用B方法,B方法调用C方法,C方法调用A方法。
-
-
注意事项:
-
递归一定要有条件限定,保证递归能够停止下来,否则会发生栈内存溢出。
-
在递归中
#### 语法案例演示一:计算1-100之间所有自然数的和 ```java public class RecursionMethod1{ public static void main(String[] args) { Count c = new Count(); int sum = c.sum(100); System.out.println("1-100的和:" + sum); } } class Count{ public int sum(int n){ if(n == 1){ return 1; }else{ return n + sum(n-1); } } } ```
求n! public class RecursionMethod2{ public static void main(String[] args) { Count c = new Count(); int jieCheng = c.jieCheng(10); System.out.println("10的阶乘是:" + jieCheng); } } class Count{ public int jieCheng(int n){ if(n <= 1){ return 1; }else{ return n * jieCheng(n-1); } } }
#### 计算斐波那契数列(Fibonacci)的第n个值 规律:一个数等于前两个数之和, f(0) =1, f(1) = 1, f(2) = f(0) + f(1) =2, f(3) = f(1) + f(2) = 3, f(4) = f(2) + f(3) = 5 ... f(n) = f(n-2) + f(n-1); public class RecursionMethod3{ public static void main(String[] args) { Count c = new Count(); System.out.println("f(10):" + c.f(10)); System.out.println("f方法被调用的总次数:" + c.total); } } class Count{ int total = 0; public int f(int n){ total++; if(n <= 1){ return 1; }else{ return f(n-2) + f(n-1); } } }
-