今天終於把漢諾塔搞懂了,以前總是一知半解

2022-01-11 19:26:43 字數 1137 閱讀 1990

漢諾塔的由來

漢諾塔是源自印度神話裡的玩具。

上帝創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上安大小順序摞著64片**圓盤。

上帝命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。

有語言說,這件事完成時宇宙會在一瞬間閃電式毀滅。也有人相信婆羅門至今還在一刻不停地搬動著圓盤。

漢諾塔與宇宙壽命

如果移動乙個圓盤需要1秒鐘的話,等到64個圓盤全部重新落在一起,宇宙被毀滅是什麼時候呢?

讓我們來考慮一下64個圓盤重新摞好需要移動多少次吧。1個的時候當然是1次,2個的時候是3次,3個的時候就用了7次......這實在是太累了

因此讓我們邏輯性的思考一下吧。

4個的時候能夠移動最大的4盤時如圖所示。

到此為止用了7次。

接下來如下圖時用1次,在上面再放上3個圓盤時還要用7次(把3個圓盤重新放在一起需要的次數)。

因此,4個的時候是

「3個圓盤重新摞在一起的次數」+1次+「3個圓盤重新摞在一起需要的次數」

=2x「3個圓盤重新摞在一起的次數」+1次

=15次。

那麼,n個的時候是

2x「(n-1)個圓盤重新摞在一起的次數」+1次。

由於1 個的時候是1次,結果n個的時候為(2的n次方減1)次。

1個圓盤的時候 2的1次方減1

2個圓盤的時候 2的2次方減1

3個圓盤的時候 2的3次方減1

4個圓盤的時候 2的4次方減1

5個圓盤的時候 2的5次方減1

........

n個圓盤的時候 2的n次方減1

也就是說,n=64的時候是(2的64次方減1)次。

因此,如果移動乙個圓盤需要1秒的話,

宇宙的壽命=2的64次方減1(秒)

用一年=60秒x60分x24小時x365天來算的話,大約有5800億年吧。

據說,現在的宇宙年齡大約是150億年,還差得遠呢。

漢諾塔問題在數學界有很高的研究價值,

而且至今還在被一些數學家們所研究,

也是我們所喜歡玩的一種益智遊戲,

它可以幫助開發智力,激發我們的思維。

遞迴程式解法(move1和move2兩種解法的結果完全一樣):

python 漢諾塔 Python漢諾塔

import turtle class stack def init self self.items def isempty self return len self.items 0 def push self,item def pop self return self.items.pop def ...

漢諾塔合集之漢諾塔3

漢諾塔3 步驟分析 1.當只有乙個圓盤時,要從a到b再到c 2.同樣擴充套件經典漢諾塔問題來看,先把a柱上 n 1 個圓盤,經b移動到c 3.把最後乙個圓盤從a移動到b 4.把c柱上的 n 1 個圓盤,經b移動 移回 到a 5.把b上的最後乙個圓盤從b移到c 6.最後把a上的 n 1 個圓盤經過b移...

漢諾塔問題

問題 假設有3個分別命名為x,y,z的寶塔,在塔座x上插有n個直徑大小各不相同,從小到大編號為1,2,3。n的圓盤。現要求將x軸上的n個圓盤移至塔座z上 並仍然按同樣的順序疊排,圓盤移動時必須遵循下列規則 1.每次只能移動乙個圓盤 2.圓盤可以插在x,y和z中的任一塔座上 3.任何時刻都不能將乙個較...