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層的漢諾塔移動的步驟。

舉報/反饋
相關文章