漢諾塔遞迴的c語言遞迴實現

2021-10-14 02:53:49 字數 618 閱讀 7953

#include

#include

using

namespace std;

void

move

(int n,

char from,

char rely,

char to)

else

}int

main()

漢諾塔遞迴演算法思路如下:

三個柱子:起點柱子:from,依賴柱子:rely,目標柱子:to

演算法流程:

函式引數 n from rely to

n>=2時

把起點柱子from上的n-1個盤子依賴目標柱子to,移動到依賴柱子rely上。

把起點柱子from上的第n(引數中的n)個盤子移動到目標柱子to上。

把依賴柱子rely上的n-1個盤子依賴起點柱子from,移動到目標柱子to上。

n==1時,直接從起點柱子from移動到目標柱子to即可。

思考:漢諾塔問題實際上是問題的分解,把問題分成子問題。

n>=2時,可以把問題分成3個子問題,其中第乙個和第三個問題本身也是和母問題同樣的型別,故可採用遞迴求解。

C 遞迴實現漢諾塔

a為存放盤子的塔,b為目標塔,c為輔助塔 演算法分為三步 一 將a上n 1個盤子全部放到c塔上 二 將a上剩下的乙個盤子放到b塔上 三 將c塔上的盤子全部放到b塔上 注 不需要考慮如何移動n 1個盤子 遞迴過程 首先,將a上n 1個盤子放到c上,然後將a上剩下的乙個盤子放到b上,然後可以看成a為輔助...

C 漢諾塔遞迴實現

程式背景 漢諾塔 tower of hanoi 又稱河內塔,問題是源於印度乙個古老傳說的益智玩具。大梵天創造世界的時候做了三根金剛石柱子,在一根柱子上從下往上按照大小順序摞著64片 圓盤。大梵天命令婆羅門把圓盤從下面開始按大小順序重新擺放在另一根柱子上。並且規定,在小圓盤上不能放大圓盤,在三根柱子之...

C語言遞迴實現漢諾塔問題

剛剛學習漢諾塔問題想要快速上手的話也可以理解為由三個柱構成 具體到函式裡下面的注釋裡有寫。在使用遞迴前我們首先要知道什麼是遞迴 程式呼叫自身的程式設計技巧稱為遞迴 recursion 遞迴的作用 遞迴做為一種演算法在程式語言中廣泛應用。乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它...