基於python的漢諾塔程式過程編寫

2021-09-29 23:18:56 字數 1677 閱讀 9072

思路:三個柱子x,y,z,有n個盤子在x上,要將n個盤子搬到z上,首先要將n-1個盤子搬到y上,再將第n個盤子從x搬到z上,再將y上的n-1個盤子搬到z上

次數:1個盤子:要搬1次

2個盤子:要搬3次

3個盤子:要搬7次..

.n個盤子:要搬2f(n-1)+1次

def

hannota(n

,x,y

,z):

ifn==

1:printx,

'-->',z

else:

hannota(n-

1,x,

z,y)

#將1個盤子從x移動到y上

printx,

'-->',z

#將疊底下的盤子從x移動到z上

hannota(n-

1,y,

x,z)

#再將y上的n-

1個盤子移動到z上n=

int(

input

("請輸入漢諾塔的層數:"))

次數:

def

count_hannota(n

):ifn

==1:

return

nelse:

return(2

*count_hannota(n-

1)+1

)

如果將漢諾塔上的每個盤子由上往下依次標個序號1,2,3,…,n-1,n

def

hannota(n

,x,y

,z,i

):ifn

==1:

printx,

'-->',z

,ielse:

hannota(n-

1,x,

z,y,

i-1)#

將1個盤子從x移動到y上

printx,

'-->',z

,i#將疊底下的盤子從x移動到z上

hannota(n-

1,y,

x,z,

i-1)#

再將y上的n-

1個盤子移動到z上

#搬運次數:

defcount_hannota(n

):ifn

==1:

return

nelse:

return(2

*count_hannota(n-

1)+1

)n=int

(input

("請輸入漢諾塔的層數:"))

i=nt

=count_hannota(n

)print

("過程: 盤子序號 "

)hannota(n

,'x'

,'y'

,'z',i

)print

("總共需要搬運%d次"%t

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 ...

漢諾塔程式

include stdio.h void move char x,char y 自定義move函式,用來將塊從起始柱子x移動到目標柱子y,這裡的x,y為形參,不代表具體哪根柱子 void hannuota int n,char a,char b,char c 自定義hannuota函式,這裡的a,b...

基於python解決漢諾塔問題(遞迴)

剛剛看了python的遞迴,實現了一下漢諾塔問題求解。mark一下,txtx。漢諾塔問題 解題思路 把n個圓盤看作兩部分 最底部的乙個圓盤和上面的n 1個圓盤 二分類 先將n 1個圓盤移到b柱 中轉 再將最底下的乙個圓盤移到c柱 目標 最後將n 1個圓盤移到c柱 目標 然後我們對n 1個圓盤做相似過...