【Java 數據結構 & 算法】寧可累死自己, 也要卷死別人 14 漢諾塔
【Java 數據結構 & 算法】???寧可累死自己, 也要卷死別人 14??? 漢諾塔

概述
漢諾塔
遞歸
漢諾塔實現
概述
從今天開始, 小白我將帶大家開啟 Java 數據結構 & 算法的新篇章.
漢諾塔
漢諾塔 (Tower of Hanoi) 是一個源于印度的古老益智玩具. 漢諾塔由三根柱子和若干大小不同的圓盤組成. 目標是把圓盤從最左邊的柱子移到最右邊的柱子上. 如圖:
遞歸
遞歸 (Recursion) 指的是在函數中調用自身. 遞歸可以幫助我們簡化問題, 使用更少的代碼達成目標.
漢諾塔實現
public class 漢諾塔 { // 漢諾塔實現 private static void hanoi(int num, char a, char b, char c) { String str = ""; // 判斷是否為最后 if(num==1) { str = "盤1從: " + a + "->" + c; System.out.println(str); } else { // 2^(n-1)次, 把除第n個盤從A移動到B hanoi(num - 1, a, c, b); str = "盤" + num + "從: " + a + "->" + c; System.out.println(str); // 2^(n-1)次, 把除第n個盤從B移動到C hanoi(num - 1, b, a, c); } } // main public static void main(String[] args) { hanoi(3, 'A', 'B', 'C'); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
輸出結果:
盤1從: A->C 盤2從: A->B 盤1從: C->B 盤3從: A->C 盤1從: B->A 盤2從: B->C 盤1從: A->C
1
2
3
4
5
6
7
Java 數據結構
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。