導航:首頁 > 編程語言 > 漢諾塔棧模擬遞歸程序

漢諾塔棧模擬遞歸程序

發布時間:2023-02-26 21:23:43

Ⅰ 用C語言代碼來編寫含漢諾塔問題,利用堆棧來實現.求代碼

演算法思想
對於漢諾塔問題,當只移動一個圓盤時,直接將圓盤從 A 針移動到 C 針。若移動的圓盤為 n(n>1),則分成幾步走:把 (n-1) 個圓盤從 A 針移動到 B 針(藉助 C 針);A 針上的最後一個圓盤移動到 C 針;B 針上的 (n-1) 個圓盤移動到 C 針(藉助 A 針)。每做一遍,移動的圓盤少一個,逐次遞減,最後當 n 為 1 時,完成整個移動過程。
因此,解決漢諾塔問題可設計一個遞歸函數,利用遞歸實現圓盤的整個移動過程,問題的解決過程是對實際操作的模擬。
程序代碼
#include <stdio.h>
int main()
{
int hanoi(int,char,char,char);
int n,counter;
printf("Input the number of diskes:");
scanf("%d",&n);
printf("\n");
counter=hanoi(n,'A','B','C');
return 0;
}
int hanoi(int n,char x,char y,char z)
{
int move(char,int,char);
if(n==1)
move(x,1,z);
else
{
hanoi(n-1,x,z,y);
move(x,n,z);
hanoi(n-1,y,x,z);
}
return 0;
}
int move(char getone,int n,char putone)
{
static int k=1;
printf("%2d:%3d # %c---%c\n",k,n,getone,putone);
if(k++%3==0)
printf("\n");
return 0;
}

閱讀全文

與漢諾塔棧模擬遞歸程序相關的資料

熱點內容
如何以文件下載音樂 瀏覽:438
計算機網路章節練習 瀏覽:999
單片機的外部中斷程序 瀏覽:48
表格批量更名找不到指定文件 瀏覽:869
js的elseif 瀏覽:584
3dmaxvray視頻教程 瀏覽:905
imgtool工具中文版 瀏覽:539
java幫助文件在哪裡 瀏覽:965
win10切換輸入語言 瀏覽:696
haier電視網路用不了怎麼辦 瀏覽:361
蘋果6手機id怎麼更改 瀏覽:179
米家掃地機器人下載什麼app 瀏覽:82
如何在編程貓代碼島20種樹 瀏覽:915
手機基礎信息存儲在哪個文件 瀏覽:726
如何查找手機備份文件 瀏覽:792
內存清理工具formac 瀏覽:323
iphone過濾騷擾電話 瀏覽:981
wap網路如何使用微信 瀏覽:699
手機迅雷應用盒子在哪個文件夾 瀏覽:351
windows8網路連接 瀏覽:442

友情鏈接