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

汉诺塔栈模拟递归程序

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

阅读全文

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

热点内容
云天视机升级怎么弄 浏览:283
win10自带的驱动删除了怎么办 浏览:143
whatsapp此时无法下载 浏览:209
java网络字节序转换 浏览:233
美版iphone4蜂窝 浏览:626
word文件打开就最大化 浏览:998
经纬度和浮点数转换工具 浏览:402
群星最新版本 浏览:471
欧洲童装网站有哪些 浏览:783
win10默认头像下载 浏览:216
dnf2017代码大全 浏览:219
编程项目经理证书怎么考 浏览:570
律师咨询什么app 浏览:863
ps导入ai什么格式文件 浏览:255
手机升级系统的利弊 浏览:411
如何判断两列是否相同的数据 浏览:25
安卓系统微信文件夹 浏览:19
xp打开word找不到文件 浏览:488
文件名占容量 浏览:882
环型槽如何编程 浏览:290

友情链接