根據以上的分析,不難寫出程式:
void move(char chsour, char chdest)
hanoi
(int n, char cha, char chb, char chc) }
main()
第二種:不使用遞迴方法。
#include
using namespace std;
const int max = 64; //
圓盤的個數最多為
64
// 用來表示每根柱子的資訊
struct st
int pop()//
出棧 void push(int x)//
入棧 } ;
long pow(int x, int y); //
計算x^y
void creat(st ta, int n); //
給結構陣列設定初值
void hannuota(st ta, long max); //
移動漢諾塔的主要函式
int main(void)
void creat(st ta, int n)
else // 若n
為奇數,按順時針方向依次擺放
a c b }
long pow(int x, int y)
void hannuota(st ta, long max)
{int k = 0; //
累計移動的次數
關於漢諾塔問題
c 課程講到遞迴演算法時,偶遇漢諾塔問題。由於之前在做一些小作品程式設計時看別人的 案例發現看不懂,覺得程式設計關鍵還是思路問題啦啦啦 解決思路是第乙個瓶頸,於是在這裡還是小白的我希望能把我的思維過程展現出來以便以後要思考漢諾塔問題的小小白 首先,我們必須自學遞迴的基礎,遞迴通俗的來說就是自己呼叫自...
漢諾塔問題
問題 假設有3個分別命名為x,y,z的寶塔,在塔座x上插有n個直徑大小各不相同,從小到大編號為1,2,3。n的圓盤。現要求將x軸上的n個圓盤移至塔座z上 並仍然按同樣的順序疊排,圓盤移動時必須遵循下列規則 1.每次只能移動乙個圓盤 2.圓盤可以插在x,y和z中的任一塔座上 3.任何時刻都不能將乙個較...
漢諾塔問題
問題是 印度的乙個古老的傳說。開天闢地的神勃拉瑪在乙個廟裡留下了三根金剛石的棒,第一根上面套著64個圓的金片,最大的乙個在底下,其餘乙個比乙個小,依次疊上去,廟裡的眾僧不倦地把它們乙個個地從這根棒搬到另一根棒上,規定可利用中間的一根棒作為幫助,但每次只能搬乙個,而且大的不能放在小的上面。解答結果請自...