初學者如何深入理解漢諾塔問題?

時間 2021-06-03 18:08:02

1樓:gongxy21

今天我也看到遞迴了。

我的思路如下,遞迴源於歸納,當n等於1時,推出結果。當n等於t-1時推出結果,並能由此推出,當n等於t時也推出結果,即M(t)能表達出M(t-1)的關係。

第一步確定漢諾塔的結果是什麼。

漢諾塔的結果就是當有幾個圓盤在原柱子時,結果就是就把這些柱子移到目標柱子。展開就是當n等於1時,結果就是把乙個圓盤從原柱子移到目標柱子,當n等於t-1時,結果就是把t-1個圓盤從原柱子移到目標柱子,當n等於t時,結果就是把t個圓盤從原柱子移到目標柱子。

要遞迴的第二個條件就是確定M(t)和M(t-1)這裡的M()方法都一樣,即從原柱子有t-1個盤子和有t個盤子時移動到目標柱子,完成結果的方式和步驟一樣,即那三步要一樣,或者說鏈條要一樣。所以要寫出t-1個盤子時移動到結果的三個步驟和t個盤子移動移動到結果的三個步驟,進行對比,步驟和方式是否一樣。如果一樣,再進行下一步。

在這基礎上,是發現M(t)和M(t-1)的關係,M(t)和M(t-1)的關係可以表示為M(t,s,t)=M(t-1,s,m)+(t,s->t)+M(t-1,m,t)

綜上,確定漢諾塔是乙個遞迴問題。

根據上面分析,確定了基例,確定了鏈條,往模板上套吧。

2樓:改成什麼呢

這主要涉及堆疊的思想,棧的思想主要是先進後出,有n個盤子不知道怎麼移動,那就把這個問題先放到棧底,然後想辦法移動n-1個盤子時的方案,當然n-1時也不知道怎麼移動,那就把這個問題入棧,一直到你能求解的盤子數為止,然後再依次把問題出棧,乙個個求解。

3樓:烈日烤魚

遞迴思考的時候可以倒著想。如果考慮最後三層,那思考過程應該是:

假設前n-1層都移動方案已知,如何移動n層呢?

先將前n-1個盤子移動至中轉柱 (這裡假設方案已知,不要糾結這n-1個怎麼移動的)

後將最後乙個盤子移動至目標柱

然後將前n-1個盤子再移動至目標柱

好了,最後一步思考完畢,現在才是思考倒數第二步的時候,現在考慮如何移動n - 1個盤子:

現在假設前n-2層的移動方案已知,如何移動n-1層呢?

先將前n-2個盤子移動至中轉柱 (同理,這裡假設方案已知,不要糾結這n-2個怎麼移動的)

後將第n-1的盤子移動至目標柱

然後將前n-2個盤子再移動至目標柱

然後開始同理思考n-2的移動方案。然後n-3, n-4....直到 1

注意這裡中轉柱,目標柱,起始柱,在不同層的移動中是不一樣的。你如果是想把n個盤子從a移動到b,那c就是中轉柱,b就是目標柱。這個過程中的一步是將n-1個盤子從a移動到c,那對於移動n-1個盤子這個子過程來講,c就是目標柱,b就是中轉柱。

初學者如何挑選紅酒?

Shawn 先圈定使用場合,自己喝還是聚會?紅葡萄酒 白葡萄酒 起泡酒 甜酒想喝哪種 不過其實最開始應該選好喝的,moscato d asti的起泡酒,俗稱小甜水,就很好 再有或者就喝博若萊新酒,很甜美,或者選擇澳洲的西拉子的也很不錯 先從簡單好喝的開始,不然會嚇走的 葡萄美酒夜光杯 初學者首先要了...

初學者如何學CAD?

黑曼巴 CAD基礎命令比較簡單,建議直接切入專業畫圖即可,什麼意思呢,就是比如說你要畫管道圖,直接就從這方面實戰開始,從畫的過程就把基礎命令學會了,建築圖就直接從建築圖開始,布置圖就直接從布置圖開始,相關的課可以去MOOC網,B站去搜就行了。最主要的是自己學完要思索,建立自己的思維導圖,這樣後期實戰...

初學者如何學習禪定?

創世女神阿庫婭 一切行都有苦,唯有禪定中無有苦。一旦出禪定,苦就應運生。一旦有出禪定的念頭,無常就應運生。你要一直深入和堅持禪定,遠遠往上飛公升,把無常拋到腳下直到它在視界中消失。但無常終究是不可被徹底被拋開的。悟透這一點,你才能真正學會禪定。 已登出 禪定的定義,禪定的標準,禪定的具體禪修方法,你...