漢諾塔問題的Python實現

2021-07-24 06:38:37 字數 793 閱讀 1449

漢諾塔問題:

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

即:3個柱子a、b、c,將第1個柱子a上的盤子,借助b原樣移動到c的方法。

#!/usr/bin/env python3   

# -*- coding: utf-8 -*-

print('漢諾塔移動')

def move(n, a, b, c):

if n == 1:

print('move', a, '-->', c)

return

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

print('move', a, '-->', c)

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

n=int(input('請輸入a柱子上的盤子數n:'))

#呼叫 當a柱子上有n個盤子時的移動方法

move(n, 'a', 'b', 'c')

input('按下enter返回')  

思路:首先把起始柱a柱上第n個盤子上方的n-1個盤子借助c柱搬到臨時柱b柱。move(n-1, a, c, b)

然後把a柱上的第n個盤子(最下面的乙個)移動到目的柱c柱。print('move', a, '-->', c)

最後把臨時柱b柱上的n-1個盤子借助a柱搬到目的柱c柱。move(n-1, b, a, c)

遞迴呼叫。

python實現漢諾塔問題

count 0 defhanoi n,x,y,z 圓盤數量,起始柱子,中間柱子,目標柱子,global count if n 1 print format 1,x,z count 1 else hanoi n 1,x,z,y 把 n 1 個圓盤從x移到y上,需借助z x z y print form...

python實現漢諾塔問題

以下圖的三層漢諾塔為例,開始柱指的是開始狀態時存放所有盤子的柱子,中轉柱指的是中間狀態時暫時存放n 1個 三層就是3 1個 盤子的柱子,目標柱指的是盤子最終要移動到的柱子。這裡需要注意,開始柱,中轉柱,目標柱並不是一成不變的,而是會根據層次的不同而改變。漢諾塔問題可這麼簡單理解 要解決從下往上數第n...

漢諾塔問題的python實現

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