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

汉诺塔栈模拟递归程序

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

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

热点内容
笔记本录音文件在哪里找 浏览:815
js进度条拖动 浏览:643
wifi钥匙显密码版 浏览:795
archlinux特点 浏览:532
如何测试一个网站的端口 浏览:783
eb编程语言怎么选 浏览:706
程序员复试提问 浏览:907
打开数据时如何保存 浏览:911
系统文件e 浏览:96
p2p网络管理组件由什么组成 浏览:613
如何编数据满足正态分布 浏览:537
万网数据库管理 浏览:867
excel2010如何改数据报表 浏览:712
如何在家查阅外文数据库 浏览:978
dc桌面大师版本 浏览:706
数控车怎么编程图 浏览:776
数据库文件中至少包含 浏览:42
什么软件可以拍照测数据 浏览:441
为什么ps制作出的文件很大 浏览:670
win10thinkpad电源管理 浏览:951

友情链接