2013-05-10 12 views
0

這塔樓的解決方案是一段代碼來解決河內問題遞歸的塔:打印河內

def printMove(fr, to): 
print('Move from tower ' + str(fr) + ' to tower ' + str(to)) 

def Towers(n, fr, to, spare): 
    if n == 1: 
     printMove(fr, to)  
    else: 
     Towers(n-1, fr, spare, to) 
     Towers(1, fr, to, spare) 
     Towers(n-1, spare, to, fr) 

n=int(raw_input('Enter the initial number of disks: ')) 
fr=str(raw_input('Enter the number for the initial tower: ')) 
to=str(raw_input('Enter the number for the second tower: ')) 
spare=str(raw_input('Enter the number for the third tower: ')) 
print(Towers(n,fr,to,spare)) 

它可以正常工作,但它打印所有的動作之後,它還會打印「無」和我不知道爲什麼。

在此先感謝

回答

4

而不是print(Towers(n,fr,to,spare))Towers(n,fr,to,spare)

沒有打印,因爲Towers沒有返回任何東西。

+0

非常感謝! – 2013-05-10 23:40:14

1

在Python中,每一個函數返回的東西。如果你沒有明確return什麼,你的函數默認返回None

在您的代碼中,Towers的返回值爲None,因此當您將其傳遞到print聲明中時,最終會打印None

+0

非常感謝! – 2013-05-10 23:43:10