還有點小問題,求助
def?Hanoi(n,a,b,c):
????if?n?==?1:
????????print(a,'-->',c)
????else:
????????Hanoi(n-1,a,c,b)
????????Hanoi(1,a,b,c)
????????Hanoi(n-1,b,a,c)
n?=?int(input('請輸入漢諾塔層數:'))
Hanoi(n,'a','b','c')
結果:
請輸入漢諾塔層數:3
a --> c
a --> b
c --> b
a --> c
b --> a
b --> c
a --> c
如果是三層的話:那么是a-->c , a -- b,之后的那個c --> b是怎么打出來的?
2016-04-13
下面進入1-1的函數:
首先要明白形參和實參的概念,形參是在函數內部用的,實參是調用時賦值給形參的。
所以在1-1的函數中b和c是反的哦.然后我們把3代入n中:
1-1-1的函數運行結果是 ?a-->c ?(b和c相反,“形參2 a-->形參4 c”),之后返回1-1中繼續下一條語句1-1-2
1-1-2的函數運行結果是 ?a-->b(b和c相反,“形參2 a-->形參4 b”) , 之后返回1-1中繼續下一條語句1-1-3
1-1-3的函數運行結果是 ?c-->b (b和c相反,“形參2 c-->形參4 b”), 之后返回最外面的函數繼續下一條語句1-2,以此類推
2016-04-13
當n=3時,執行Hanoi(3,'a','b','c')
n!=1,執行else?? Hanoi(2,'a','c','b')
此時需要把Hanoi(2,'a','c','b')執行完才會執行初始程序中的else的第二行?Hanoi(1,a,b,c)
執行Hanoi(2,'a','c','b')的過程為
??????? Hanoi(2-1,'a','b','c')
????????Hanoi(1,'a','c','b')
????????Hanoi(2-1,'c','a','b')
得到打印的前三個結果
2016-04-13
大兄弟,你有行代碼錯了吧