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

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

如何深入理解遞歸解漢諾塔?

遞歸核心代碼如下

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) ? ?②

稍微懂一點遞歸,這段代碼看也勉強能看懂,自己慢慢順著推了一遍覺得這個遞歸設計得很神奇。只是想知道在設計的時候,在不知道這個答案的時候,①和②這兩個遞歸是這么設計出來的?就是遞歸的形參順序,為什么可以這么設計。

另外比較好奇深入理解“遞歸”的人在碰到類似的問題的時候,是靠自己的深入理解來分析題目,得出解答,還是依靠記憶得到代碼模板,再根據題目自己“試”出正解?

正在回答

3 回答

首先在思考的時候你有假設了有a盤有N個圓餅,當然前提在于這個擺放一定是上面小下面大的方式。1的函數是先把除了底盤以外的圓盤借助c先到達b,此時a上還有一個底盤,print a,'->',c,直接將底盤放到C上,然后代碼2就是再借助a將剛才放在b的圓盤運往c。遞歸設計在運用以前學過的數列之中是非常好的,他可以自己幫你推演公式,你只需要寫幾行代碼就行。這個題目在于定義函數和分情況討論,

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

不斯文敗類 提問者

豁然開朗,非常感謝
2017-10-20 回復 有任何疑惑可以回復我~

表示沒看懂

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

我想問一下 為什么if n==1:中最后一行為什么有個return如果沒有return 為啥會超時?

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

舉報

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

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

進入課程

如何深入理解遞歸解漢諾塔?

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

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

幫助反饋 APP下載

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

公眾號

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