導航:首頁 > 源碼編譯 > 漢諾塔遞歸演算法

漢諾塔遞歸演算法

發布時間:2022-01-18 00:23:02

① 求漢諾塔遞歸全過程的演算法詳解圖,記得一定要是圖釋哦!!!

圖解是什麼意思呀。
這個演算法 那麼簡單沒必要搞得那麼復雜吧。
an = an-1 + 1;
你明白這個等式的意義嗎?
這個等式已經包含了遞歸演算法的全部含義。

an 表示 n個數的和,an-1 表示n-1個數的和 ,an = an-1 + 1;表示n個數的和可以通過n-1個數的和來求的。
上述說明哪些情況可以使用遞歸呢?
那就是:已知前一個步驟可以求得後一個步驟的結果的情況,並且前一個步驟和後一個步驟是有規律過度的。
比如漢諾塔問題:
移n個盤是已移n-1個盤為條件的,兩者的共同點是移盤。所以可以用f(n)表示移n個盤,f(n-1)表示移n-1個盤,那麼移n個盤和移n-1個盤有什麼關系呢?
這就需要預先分析問題才能得出具體的關系
在這個問題中,把n個盤從a移到c需要三個步驟來完成。
1.n-1個盤從a移到b
2 1個盤從a移到c
3 n-1個盤從b移到c
已知n-1個盤從a移到b是可行的,為什麼?
因為移1個盤是可行,那麼移2個盤也是可行,移 3個盤是已移2個盤為條件的,所以移3個盤也是可行的,所以移n個 盤是可行的。
所以根據已知條件可以解得:
設f(n, a, b,c) 表示 把n個盤從a移到c 藉助b --------------------------這里很關鍵,這是搞懂遞歸的關鍵關鍵。
那麼把n-1個盤從a移到b 藉助c 怎樣表示呢?
很明顯是:f(n-1, a, c,b)
那麼把1個盤從a移到c怎樣表示呢?
很明顯是:f(1, a, b,c)
那麼把n-1個盤從b移到c 藉助a 怎樣表示呢?
很明顯是:f(n-1, b, a,c)

所以f(n, a, b,c) = ( f(n-1, a,c,b) , f(1, a, b,c), f(n-1, b,a,c))
這和等差等比數列一個原理。
沒有什麼 特別的。

記住是問題有這樣遞推關系才可以使用這種方法。
如果要你計算1+2+8+22 的結果 你就不能使用遞歸。
因為該問題的後一步驟與前一步驟不具有規律性,所以已知前一個步驟並不能求的後一個步驟的值
1+2+3+4 ...+
這個問題就可以使用遞歸
原因你懂了吧。
至於爬樓梯問題,無限級分類 問題等一些遞歸問題,那不過時小菜一碟。
一句話:後一步驟依賴前一步驟並且二者聯系具有規律性,運用遞歸必然成功。

② 漢諾塔遞歸函數

遞歸式解決邏輯問題的。基本思想是::把規模大的、較難解決的問題變成規模較小的、易解決的同一問題。規模較小的問題又變成規模更小的問題,並且小到一定程度可以直接得出它的解,從而得到原來問題的解。
C有一個漢諾塔,就是非用遞歸才能解決的一個問題。
利用遞歸演算法解題,首先要對問題的以下三個方面進行分析:
一、決定問題規模的參數。需要用遞歸演算法解決的問題,其規模通常都是比較大的,在問題中決定規模大小(或問題復雜程度)的量有哪些?把它們找出來。

二、問題的邊界條件及邊界值。在什麼情況下可以直接得出問題的解?這就是問題的邊界條件及邊界值。

三、解決問題的通式。把規模大的、較難解決的問題變成規模較小、易解決的同一問題,需要通過哪些步驟或等式來實現?這是解決遞歸問題的難點。

③ 漢諾塔的遞歸演算法要求源代碼(朱站立數據結構上有)

給個過程吧
H(n,a,b,c)表示把n個盤子從a柱通過b柱挪到c柱需要的步數
program H(n:longint;a,b,c:char):longint;
begin
if n=1 then
begin
writeln(a,'->',c);//一個盤子只需一步
exit;
end;
H(n-1,a,c,b); //為了把它們移到c柱,先要通過c柱移到b柱,這你可以手工算一下
inc(step);//步數加一
writeln(a,'->',c);
H(n-1,b,a,c); //再從b柱移到c柱
end.

④ 漢諾塔遞歸演算法分析

我之前回答過的,http://..com/question/499530116.html?oldq=1&from=evaluateTo#reply-box-1259261416

⑤ 漢諾塔分治遞歸演算法解釋!

hanoi中的參數:從A(源)通過B(中轉)移動到C(目的)
先把n-1個從A通過C移動到B:hanoi(n-1,A,C,B,time);
再把最後那個從A移到C:move(A,C);
然後把那n-1個從B通過A移到C:hanoi(n-1,B,A,C,time)
注意每一步的目的是什麼

⑥ 漢諾塔遞歸演算法

1個只要1次2個碟子要3次3個要7次歸納法可以推得復雜度為2^n-1這個可以證明的,只是證明很復雜。

⑦ 遞歸演算法 漢諾塔 演示

整理分析結果:把第1步中化簡問題的條件作為遞歸 結束條件,將第3步分析得到的演算法作為遞歸演算法。
定義函數movedisc( n,fromneedle,toneedle,usingneedle)。將 fromneedle 桿上的 N 個圓盤,藉助 usingneedle 桿,移動到 toneedle 桿上。
移動N個圓盤的遞歸演算法描述如下:
movedisc ( n,fromneedle,toneedle,usingneedle )
{ if ( n==1 ) 將 n 號圓盤從 fromneedle 上移到 toneedle;
else {
① movedisc ( n-1,fromneedle,usingneedle,toneedle )
② 將 n 號圓盤從 fromneedle 上移到 toneedle;
③ movedisc ( n-1,usingneedle,toneedle,fromneedle )
}
}

下面是程序
int i=0; /* 移動圓盤數量計數器 */
main( )
{ unsigned n;
scanf ("%d", &n);
movedisc ( n,』a』,』b』,』c』); /* 將A上的N個圓盤藉助C將移動到B上 */
printf( "\t Total: %d\n", i );
}
movedisc ( n, fromneedle, toneedle, usingneedle )
unsigned n;
char fromneedle, toneedle, usingneedle;
{ if ( n == 1 )
printf("%2d-(%2d): %c ==> %c\n",++i, n,fromneedle,toneedle);
else {
movedisc ( n-1, fromneedle, usingneedle, toneedle );
printf("%2d-(%2d): %c ==> %c\n",++i, n,fromneedle,toneedle);
movedisc ( n-1, usingneedle, toneedle, fromneedle );
}
}

⑧ 漢諾塔問題的遞歸演算法流程圖

關鍵是第一步移法,奇數層的說,3層在第一柱,後兩根柱數數:123。所以,第一塊應放在第二根柱,4層,第一塊放第三柱。...........奇數層第一塊放第二柱,偶數層第一塊放第三柱。

⑨ 漢諾塔 遞歸演算法的詳細解釋請教高手

為了實現 n個盤從 藉助c 從a 移動到 b
思路如下:
首先考慮極限當只有一個盤的時候 只要 盤直接從 a -> b即可
那麼當有2個盤的時候就只要先把1號盤從a -> c 然後 把2號盤 a->b 再 把 2好盤從 c - > b
那麼當有n個盤的時候你只要先把 n-1個 盤 藉助 b 移動到 c 然後將 n號盤從 a -> b
那麼這時候只要將 n-1想辦法從c移動到 b 藉助 a 那麼就可以先把 n-2個盤藉助b移動到a
然後 把n-1號盤從c-> b如此遞歸就是了!
#include <stdio.h>

void mov(int n,char a,char b)
{
printf("盤%d : 從 %c ---> %c\n",n,a,b);
}

void Hanoi(int n,char a,char b,char c)
{
if(n == 0) return ;
Hanoi(n-1,a,c,b);
mov(n,a,b);
Hanoi(n-1,c,b,a);

}
int main()
{
Hanoi(2,'a','b','c');
return 0;
}

java漢諾塔遞歸演算法

moveDish(level-1,from,to,inter);
是指的自把
level-1
個盤子百從度
from
藉助
to
,移到
inter
上。
另外,System.out.println("3從"+from+"移動問盤子"+level+"號到"+to);里的3是多餘答的。
就為System.out.println("從"+from+"移動盤子"+level+"號到"+to);

閱讀全文

與漢諾塔遞歸演算法相關的資料

熱點內容
windows命令打開文件 瀏覽:483
php個人簡歷模板 瀏覽:911
sshkeygenlinux 瀏覽:655
java包的創建 瀏覽:682
vlog用什麼app可以拍長視頻 瀏覽:578
安卓手機為什麼總是出現藍屏 瀏覽:255
u盤超級加密3000加密後 瀏覽:879
sql插入數據命令 瀏覽:470
u盤根目錄文件夾是哪個 瀏覽:693
新預演算法預算編制 瀏覽:622
perl怎樣遍歷文件夾 瀏覽:636
安卓手機如何更好的保護隱私 瀏覽:316
程序員書籍知乎 瀏覽:154
王者安卓v區怎麼轉移到蘋果 瀏覽:449
加密區卸載 瀏覽:122
女程序員壓力大想辭職 瀏覽:681
演算法體現在哪裡 瀏覽:219
阿里雲個人伺服器推薦 瀏覽:363
汽車識別視頻文件夾 瀏覽:110
檔案伺服器不可用是什麼意思 瀏覽:525