當輸入3時
這個代碼中輸入3個盤子時 ,程序的結果是A->C ?A->B ?C->B ?A->C ?B->A ?B->C ?A->C ? ?,而正確的結果不是應該是A->B ?A->C ?B->A ?B->C ?A->C 嗎? ?還是說程序運行的結果也是另一種方法?拜托同學們幫我看看 ?謝謝
這個代碼中輸入3個盤子時 ,程序的結果是A->C ?A->B ?C->B ?A->C ?B->A ?B->C ?A->C ? ?,而正確的結果不是應該是A->B ?A->C ?B->A ?B->C ?A->C 嗎? ?還是說程序運行的結果也是另一種方法?拜托同學們幫我看看 ?謝謝
2018-06-10
舉報
2018-06-22
你的結果不對, 第四步的時候,B上已經沒盤子了。
這有個游戲,你可以試一下。
http://www.3454.com/91990p
附帶我的代碼注釋,(我附加計算了不同盤子需要移動的步數):
# _*_ coding:utf-8 _*_
def move(n, a, b, c):
? ? #如果a只有一個圓盤,可以直接移動到c
? ? if n ==1:
? ? ? ? print a, '-->', c
? ? ? ? return 1
? ? num=move(n-1, a, c, b) # (N-1) 個圓盤移動到 b
? ??
? ? num=num+1
? ? print a, '-->', c ?#將a的最后一個圓盤移動到c
?
? ? num2=move(n-1, b, a, c) #再將b的(N-1)個圓盤移動到c
? ? return num+num2
? ??
print move(4, 'A', 'B', 'C')
2018-06-10
程序運行的結果沒有錯,你提供的結果有待商榷:每次只能移動一個盤子,B本來沒有盤子,按你的說法,第一步:從A中取最小的盤子給B。第二步:取第二小的盤子給C。第三步:把B中最小的盤子給回A。第四步就有問題了,這時候B沒有盤子了,何來B給C盤子呢??
2018-06-10
額 懂了 是我沒把規則搞懂