Java學習:遞歸的實操
遞歸就是直接或者間接調用滋生。需要注意的就是,一定要有一個判斷條件讓這個死循環結束。
Java學習遞歸實操訓練一:
利用遞歸算出10的階乘:
此方法是常規方法:<主要用作和下面用遞歸的對比>
public static void main(String[] args) { // 遞歸,十的階乘 System.out.println(results(10)); } public static int results(int x) { int sum = 1; for (int i = x; i > 1; i--) { sum *= i; } return sum; }
此方法爲遞歸方法:
public static void main(String[] args) { // 遞歸,十的階乘 System.out.println(results(10)); } public static int results(int x) { if(x == 1) { return 1; } return results(x - 1) * x; }
Java控制檯輸出結果爲:3628800
利用遞歸算出100的階加:
此方法爲階加方法:
public static void main(String[] args) { // 遞歸,十的階加 System.out.println(results(100)); } public static int results(int x) { if(x == 0) { return 0; } return results(x - 1) + x; }
Java控制檯輸出結果爲:5050
利用遞歸玩遊戲 - 漢諾塔(相對比較難):
將 柱子A 中的所有套圈轉移到 柱子C 上。
思路:利用遞歸思路,把套圈假設爲 n 個,將 n 轉換 成 n - 1 的問題:
public static void main(String[] args) { // 遞歸 game('A', 'B', 'C', 3); } public static void game(char a, char b, char c, int n) { if (n == 1) { System.out.println(a + "=>" + b); return; } // 將第n-1個由A=>C game(a, c, b, n - 1); // 將第n個由A=>B System.out.println(a + "=>" + b); // 將第n-1由C=>B game(c, b, a, n - 1); }
Java控制檯輸出結果:
A=>BA=>CB=>CA=>BC=>AC=>BA=>B
這就是將3層的漢諾塔移動的步驟。
舉報/反饋