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

汉诺塔栈模拟递归程序

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

阅读全文

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

热点内容
什么是机灵数据 浏览:724
ecshop配置文件 浏览:116
excel两个表格怎么对比相同数据 浏览:383
ps4港服文件怎么弄 浏览:560
苹果6splusnote5s6 浏览:426
定向流量30G都包括哪些APP 浏览:352
apple和瑶瑶综艺 浏览:351
打开word所在文件夹自动弹出 浏览:390
c怎么编程改名字 浏览:146
哪些电视剧app不带logo的 浏览:406
开机后桌面变黑色桌面文件丢失 浏览:136
网络电视怎么用遥控器 浏览:953
我的世界json打开失败 浏览:867
易语言56教程视频 浏览:610
linux开机启动文件 浏览:773
给宝宝唱儿歌用什么app 浏览:354
投标文件为什么要使用cad软件 浏览:522
一季度保险业务数据如何看 浏览:398
为什么行车记录仪文件大小为0 浏览:795
win10笔记本传输文件 浏览:735

友情链接