C語言基礎 漢諾塔(遞迴方法)

2022-05-23 19:36:06 字數 714 閱讀 2251

分析:

當只有乙個盤子的時候,只需要從將a塔上的乙個盤子移到c塔上。

當a塔上有兩個盤子是,先將a塔上的1號盤子(編號從上到下)移動到b塔上,

再將a塔上的2號盤子移動的c塔上,最後將b塔上的小盤子移動到c塔上。

當a塔上有3個盤子時,先將a塔上編號1至2的盤子(共2個)移動到b塔上(需借助c塔),

然後將a塔上的3號最大的盤子移動到c塔,最後將b塔上的兩個盤子借助a塔移動到c塔上。

當a塔上有n個盤子是,先將a塔上編號1至n-1的盤子(共n-1個)移動到b塔上(借助c塔),

然後將a塔上最大的n號盤子移動到c塔上,最後將b塔上的n-1個盤子借助a塔移動到c塔上。 

第乙個引數n:代表盤子的個數,也為盤子編號 

第二個引數a:代表源杆

第三個引數b:代表中間杆

第四個引數c:代表目標杆

#include

void hanoi(int n, char a,char b,char c);

void move(int n, char a, char c);

int count;

void main()

void hanoi(int n, char a, char b, char c)

else

}void move(int n, char a, char c)//第乙個引數n:代表要移動的盤子,第二引數a:源杆,第三個引數c:目標杆 

漢諾塔遞迴方法

hannuota int n,char x,char y,char z x柱子是要移動的柱子,y柱子是x移動要借助的柱子,z柱子是要放在這個柱子上 在 hannuota函式中的遞迴判斷方法 如果是1個盤子 直接將a柱子上的盤子從a移到c 否則先將a柱子上的n 1個盤子借助c移到b 直接將a柱子上的盤...

C 遞迴,漢諾塔

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

漢諾塔 遞迴 c

1.遞迴終止條件 沒有安排好的盤子只剩乙個。此時將其從a,放到c 2.子問題 先將n 1個盤子從a經過中轉站c放到b,再將n 1個盤子從b經中轉站a放到c。3.cout的是從出發點到中轉站,n 1時cout從出發點到終點。輸入 盤子的數量n 輸出 每一步移動 輸入範例 2輸出範例 a b a c b...