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

汉诺塔栈模拟递归程序

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

阅读全文

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

热点内容
u深度取消赞助密码 浏览:168
编程写东西都写得是什么 浏览:35
蔚来怎么推荐app 浏览:269
6s输入密码来使用siri 浏览:742
程序员黑客头像酷 浏览:739
mvc接受上传文件 浏览:365
程序员可以转金融吗 浏览:193
无需用户名密码的共享 浏览:775
一加怎么和win10传输文件 浏览:425
大数据分析哪些行业 浏览:848
win10删除自动更新文件在哪里 浏览:581
cad打开一个文件要关闭另一文件 浏览:432
钢铁雄心4升级包 浏览:558
一加找不到恢复文件 浏览:960
辽宁高中查分数的app有哪些 浏览:790
考研复试编程题可以考什么 浏览:118
微信老男人头像图片 浏览:588
贷款app有哪些东西 浏览:74
sim卡突然无网络连接怎么办 浏览:150
制度文件内容要简洁 浏览:96

友情链接