漢諾塔問題(java實現)

2021-07-11 04:30:36 字數 1077 閱讀 8166

漢諾塔(又稱河內塔)問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片**圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。

假設有x,y,z三根柱子,現將x上的圓盤移動至z盤,期間可以借助y盤。

若只有乙個圓盤,只需將其從x盤移動至z盤即可。

若有多個圓盤,則先將前n-1個圓盤從x盤移動到y盤,再將第n個圓盤從x移動到z盤;然後對於y中n-1個盤的移動問題與問題本身的分析類似,只是將y盤上的圓盤移動至z盤,期間可以借助x盤。

public

class tower_of_hanoi else

}public

static

void

main(string args) catch(exception e)

}}

請輸入移動的個數:5

將1從x移動到z

將2從x移動到y

將1從z移動到y

將3從x移動到z

將1從y移動到x

將2從y移動到z

將1從x移動到z

將4從x移動到y

將1從z移動到y

將2從z移動到x

將1從y移動到x

將3從z移動到y

將1從x移動到z

將2從x移動到y

將1從z移動到y

將5從x移動到z

將1從y移動到x

將2從y移動到z

將1從x移動到z

將3從y移動到x

將1從z移動到y

將2從z移動到x

將1從y移動到x

將4從y移動到z

將1從x移動到z

將2從x移動到y

將1從z移動到y

將3從x移動到z

將1從y移動到x

將2從y移動到z

將1從x移動到z

一共需要移動的次數為:31

有問題的地方還請各位多多包含,不吝賜教。

漢諾塔的java實現

漢諾塔問題描述 假設有三個命名為x tower 1 y tower 2 z tower 3 的塔座,在塔座x上有n個直徑大小各不相同,依次從小到大編號為1,2,3,n的圓盤。現要求將x塔座上的n個圓盤移到z塔座上並按同樣順序疊排,圓盤移動時必須遵循下列規則 1 每次只能移動乙個圓盤 2 圓盤可以插在...

java 漢諾塔問題 遞迴

stacks1 new stack stacks2 new stack stacks3 new stack s1.push 3 s1.push 2 s1.push 1 run3 3,s1,s2,s3 public static void run3 int size,stacks1,stacks2,s...

遞迴實現漢諾塔問題

遞迴的思想是將乙個大的複雜的問題分成小的問題來解決,而要求是小的問題與大的問題有相似的解法,並且問題的規模越來越小,並且必須存在遞迴出口。下面就用 完成漢諾塔問題 總結 通過遞迴實現漢諾塔的例子我們可以看出,在涉及大型而複雜的問題時,遞迴會使程式在總體上變得簡單易於理解,而涉及遞迴的呼叫過程時則會比...