課程
/后端開發
/Python
/初識Python
為什么結果會出來那么多?到底循環了多少次?函數內參數的順序是任意的嗎?
2017-09-19
源自:初識Python 7-5
正在回答
因為每次遞歸他就要走完全部代碼除非遇到return
1,if n==1:
print a, '-->', c ? ? ? ?return
2,move(n-1, a, c, b)3,print a, '-->', c
4,?move(n-1, b, a, c)
當調用move(4, 'A', 'B', 'C')時進入函數后,
他要走1->2->3->4
到2時遞歸又要走一個1->2->3->4
把2的所有遞歸走完 還要回去走 3->4
幾種方案:
1、break跳出循環(如:while n>=100 ? break)
2、定義循環的范圍
遞歸的調用是倒過來的,你可以用n=2的帶入你的函數觀察執行步驟,然后n=3依次。參數是根據傳入的順序判斷的,跟值沒有關系。
舉報
學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2017-09-28
因為每次遞歸他就要走完全部代碼除非遇到return
1,if n==1:
print a, '-->', c
? ? ? ?return
2,move(n-1, a, c, b)
3,print a, '-->', c
4,?move(n-1, b, a, c)
當調用move(4, 'A', 'B', 'C')時進入函數后,
他要走1->2->3->4
到2時遞歸又要走一個1->2->3->4
把2的所有遞歸走完 還要回去走 3->4
2017-09-19
幾種方案:
1、break跳出循環(如:while n>=100 ? break)
2、定義循環的范圍
2017-09-19
遞歸的調用是倒過來的,你可以用n=2的帶入你的函數觀察執行步驟,然后n=3依次。參數是根據傳入的順序判斷的,跟值沒有關系。