遞歸的分類:
-
遞歸分為兩種,直接遞歸和間接遞歸。
-
直接遞歸稱為方法自身調用自己。
-
間接遞歸可以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); } } }