导航:首页 > 编程语言 > 汉诺塔栈模拟递归程序

汉诺塔栈模拟递归程序

发布时间: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;
}

阅读全文

与汉诺塔栈模拟递归程序相关的资料

热点内容
javafx窗口函数 浏览:902
js控制easyuitab 浏览:575
win10怎能局部放大屏幕 浏览:828
法律先生微信公众号 浏览:837
淘宝苹果扩容 浏览:832
sql数据库表id清零 浏览:3
网络战争richard 浏览:842
文件档案整理工作有什么要求 浏览:707
一个文件夹能保存多少照片 浏览:838
泉盛对讲机写频教程 浏览:262
哪个app可以免费当卖家 浏览:949
cad中文件每次打开都是问号 浏览:147
自学编程顺序乱怎么办 浏览:510
数据e4是什么意思 浏览:140
什么网站能查找q豆 浏览:753
ios判断ipadiphone 浏览:459
wifi密码改了网用不了 浏览:164
安卓手机怎么下载逛街app 浏览:994
苹果笔记本101参数 浏览:386
唱吧在哪里查看关键了其他app 浏览:388

友情链接