沒有搞懂 有誰能解釋下 用大白話
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') 這是代碼,哪位大佬能用大白話解釋下圖片中的三行代碼,以及怎么就打印出了他們的移動(dòng)步驟,屬實(shí)沒搞懂,漢諾塔怎么實(shí)現(xiàn)我知道了,但是編寫代碼沒搞懂,尤其圖片中的三行重要代碼! 代碼中為什么沒有???move(n-1,c,b,a)??這行代碼呢 程序邏輯是啥 解釋不清的、混經(jīng)驗(yàn)的就請(qǐng)別評(píng)論??別浪費(fèi)我問答機(jī)會(huì)???讓老師來回答??這已經(jīng)是重新第3次發(fā)了??謝謝
2020-01-09
畫了個(gè)圖,是為了說明問題的。
可以理解為:代碼按順序執(zhí)行,每次調(diào)用函數(shù),最后都有個(gè)print和之后的return,被調(diào)用的函數(shù)return后,調(diào)用的函數(shù)才繼續(xù)往下走。所以下圖的打印輸出,每一層是從后往前打印的。
2020-01-10
不知道你問的意思是什么,想了想,或許是你沒理解參數(shù)傳遞規(guī)則才會(huì)有疑問。
請(qǐng)注意參數(shù)傳遞的規(guī)則:參數(shù)是按位置傳遞的。
當(dāng)運(yùn)行第5行??
move(n
-
1
,?a,?c,?b)且n-1值為1時(shí),通過遞歸調(diào)用就會(huì)執(zhí)行第2,3,4行代碼(這個(gè)理解吧?)
這時(shí),請(qǐng)你關(guān)注一下,第一行獲得的參數(shù)實(shí)際是是什么:
move(n,?a,?b,?c):
? ? //第5行代碼按位置把參數(shù)傳遞到這行,于是a獲得的值仍舊是a,但b獲得的其實(shí)是c(也就是“C”),c獲得的值是b(也就是“B”)??
if
?n?
=
=
1
:
???????
print
?a,?
'-->'
,?c
? ? ? ?//所以這行打印出來的結(jié)果是 A——>B
?
return
不知道能否幫到你。