沒有搞懂 有誰能解釋下 用大白話

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