亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

還有點小問題,求助

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是怎么打出來的?


正在回答

3 回答

def?Hanoi(3,a,b,c):
????if?n?==?1:
????????print(a,'-->',c)
????else:
????????Hanoi(2,a,c,b)???????????????#1-1??注意實參順序,b和c位置顛倒
????????Hanoi(1,a,b,c)???????????????#1-2
????????Hanoi(2,b,a,c)???????????????#1-3???注意實參順序,a和b位置顛倒
n?=?int(input('請輸入漢諾塔層數:'))
Hanoi(n,'a','b','c')

下面進入1-1的函數:

def?Hanoi(2,a,b,c):???????#1-1實參傳入的是Hanoi(2,a,c,b),注意b和c是反的,即實參b=形參c,實參c=形參b
????if?n?==?1:
????????print(a,'-->',c)????????????#這句其實的意思是“形參2-->形參4”
????else:
????????Hanoi(1,a,c,b)???????????????#1-1-1
????????Hanoi(1,a,b,c)?????????????????#1-1-2
????????Hanoi(1,b,a,c)???????????????#1-1-3
n?=?int(input('請輸入漢諾塔層數:'))
Hanoi(n,'a','b','c')

首先要明白形參和實參的概念,形參是在函數內部用的,實參是調用時賦值給形參的。

所以在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,以此類推


2 回復 有任何疑惑可以回復我~
#1

DawnCat13

運行的順序是: 1-1 1-1-1 1-1-2 1-1-3 1-2 1-3 1-3-1 1-3-2 1-3-3
2016-04-13 回復 有任何疑惑可以回復我~
#2

Capricorn_x 提問者

解釋的太清楚啦,多謝多謝!
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')

得到打印的前三個結果


0 回復 有任何疑惑可以回復我~
#1

Capricorn_x 提問者

嗯嗯,懂啦,是參數問題,多謝多謝
2016-04-13 回復 有任何疑惑可以回復我~

大兄弟,你有行代碼錯了吧

0 回復 有任何疑惑可以回復我~
#1

Capricorn_x 提問者

應該沒錯吧?我驗證了幾次
2016-04-13 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758398    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

還有點小問題,求助

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號