漢諾塔問題解析

2021-09-27 09:16:24 字數 546 閱讀 4282

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

這個問題可以用遞迴的方法解決。

假設把n片圓盤由a柱移動到c柱,b柱為中轉站,所用方法:

hanoi(n, 'a', 'b', 'c');
下面就是考慮怎麼實現這個方法。

首先,當n = 1時,可以一步到位!

然後,當n > 1時,需要先將上面的n-1個小盤子由a移動到b,再將底下最大的盤子由a移動到c,最後再將b上的n-1個盤子移動到c。

於是:

var hanoi = function (n, a, b, c)  >>>> $`)

} else >>>> $`)

// 最後把n-1層由b挪到c

hanoi(n-1, b, a, c)

}}

漢諾塔問題解法

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

漢諾塔問題解答

漢諾塔的盤子移動過程中目的將盤子從a 初始盤 借助b 借用盤 移動到c 目標盤 整個過程注意把握兩點 一 一次遞迴呼叫中三個盤子分別起到了什麼作用。二 呼叫以後三個盤子的角色又變換成了什麼。詳細分析 n 2 兩個盤子的情況下 1.第一次呼叫find函式a盤代表初始盤,b盤代表目標盤,c盤代表借用盤。...

漢諾塔演算法解析

first declare the time 2017年2月17日13 26 35 主要問題 開頭有 n 個盤子,要求從 a 移動到 c 並且最後盤子的順序不變。主要思路 要考慮 n 個盤子的移動,只需考慮 n 1 個盤子是如何移動的,第 n個盤子直接移動即可 要考慮 n 1個盤子的移動,只需考慮 ...