a,b,c分別代表什么?為什么遞歸時要換參數的順序
def move(n, a, b, c):
? ?if n == 1:
? ? ? ?print a,'-->',c
? ? ? ?return
? ?move(n-1,a,c,b)
? ?print a,'-->',c
? ?move(n-1,b,a,c)
move(4, 'A', 'B', 'C')
def move(n, a, b, c):
? ?if n == 1:
? ? ? ?print a,'-->',c
? ? ? ?return
? ?move(n-1,a,c,b)
? ?print a,'-->',c
? ?move(n-1,b,a,c)
move(4, 'A', 'B', 'C')
2017-07-07
舉報
2017-07-07
#a,b,c代表三個柱子,這個是典型的漢諾塔問題,遞歸的思想是一層一層的反復調用同一個函數,然后形參n會發生變化,n滿足一定條件時結束調用返回函數,然后一層一層的返回
#-*- coding:utf-8 -*-
# move(n, a, b, c)表示的是有n個盤子在a柱子上,將要移到b柱子上面去
def move(n, a, b, c):
# 如果a柱子上面只有一個盤子,則直接移到c柱子上面去并輸出路徑,結束遞歸
? ? if n == 1: ?
? ? ? ? print (a, '-->', c)
? ? ? ? return
# 表示的是將n-1的盤子從a柱子上面移到b柱子上面去
? ? move(n-1, a, c, b)
# 輸出最下面個盤子移從a移到c的路徑
? ? print (a, '-->', c
# 將b柱子上面的n-1個盤子移動到c柱子上面
? ? move(n-1, b, a, c)
move(4, 'A', 'B', 'C')