漢諾塔 遞迴

2021-10-19 10:54:24 字數 1061 閱讀 6739

當n=1時:移動1 方向 a—>c; 移動一次

當n=2時:移動1 方向 a—>b;

移動2 方向 a—>c;

移動1 方向 b—>c; 移動三次

當n=3時:移動1 方向 a—>c;

移動2 方向 a—>b;

移動1 方向 c—>b;

移動3 方向 a—>c;

移動1 方向 b—>a;

移動2 方向 b—>c;

移動1 方向 a—>c; 移動七次

1>把n-1個圓盤由a移到b;

2>把第n個圓盤由a移到c;

3>把n-1個圓盤由b移到c;

我們是把n-1個圓盤看成乙個整體去分析的,

****那如何把n-1個圓盤從a移到b呢?(借助c塔移到了b上)

我們可以把n-2個圓盤看成乙個整體去分析:

1>把n-2個圓盤由a移到c;

2>把第n-1個圓盤由a移到b;

3>把n-2個圓盤由c移到b;

****那如何把n-1個圓盤從b移到c呢?(借助a塔移到了c上)

1>把n-2個圓盤由b移到a;

2>把第n-1個圓盤由b移到c;

3>把n-2個圓盤由a移到c;

(1)中間的一步是把最大的乙個盤子由a移到c上去;

(2)中間一步之上可以看成把a上n-1個盤子通過借助c塔移到了b上,

(3)中間一步之下可以看成把b上n-1個盤子通過借助a塔移到了c上;

ps(有些內容取自網上,若覺得侵權可以刪掉)

下面是萌新寫的**:(技術很菜。。。)

#include

int cnt;

void

hanoi

(int n,

char a,

char b,

char c)

intmain()

return0;

}

漢諾塔 遞迴

個人理解遞迴函式的基本要求就是,函式中呼叫函式本身,滿足特定的條件後返回。include include include include include include include include include include include include include 標頭檔案引用的較多...

遞迴漢諾塔

遞迴問題 遞迴要有三個要素 1.遞迴結束條件 2.遞迴結束時的處理 3.抽取重複的邏輯,剝離外殼 重點都在這一步 漢諾塔問題 把圓盤從下面開始按大小順序重新擺放在另一根柱子上。且規定,在小圓盤上不能放大圓盤,在三根柱子之間一次只能移動乙個圓盤。首先,要搞這個編碼得要知道漢諾塔的解題思路 1.把a塔上...

遞迴 漢諾塔

漢諾塔問題。這裡順便可以求出一共需要搬運的次數。以下是漢諾塔問題的解法 class hanoi from 搬運的起點,to 搬運的目標地,middle 臨時中轉地 private static int hanoi int level,char from,char to,char middle int...