有没有谁有用递归算法演示汉诺塔过程的C语言程序?谢谢了!

来源:百度知道 编辑:UC知道 时间:2024/05/17 04:16:15
基本要求:1.要有欢迎界面,提示用户选择盘子的个数,可以是1到10;
2.演示界面要有清晰形象,每一步有移动的起止位置显示;
3.可以选择至少两种以上的演示速度。
最好有图形说明、按键操作和一些程序语句的解释说明
希望有好心人能帮助小弟,谢谢了

#include<stdio.h>
#include<stdlib.h>
void tim(int k){ /*延时函数*/
int i;
for(i=0;i<k;i++)
delay(5000);
}
void move(char x,char y,int n){/*移动*/
tim(n);
printf("%c-->%c\n",x,y);}
void hanoi(int k,int n,char one,char two,char three){
if(n==1) move(one,three,k);
else {
hanoi(k,n-1,one,three,two);
move(one,three,k);
hanoi(k,n-1,two,one,three);}
}
main(){
int m,k;
printf("Hello!This is hanoi Wrold!\n");
printf("input the number(1~10) of diskes:"); /*选择盘子个数*/
scanf("%d",&m);
printf("\nchoose speed 1,2,3 :");/*选择速度*/
scanf("%d",&k);
printf("The step tp moving %3d diskes:\n",m);
hanoi(50*k,m,'A','B','C'); /*三个柱分别命名为A,B,C*/
getch();
}

/*还要"最好有图形说明、按键操作和一些程序语句的解释说明"吗?加分先!*/

C++的如下,你自己改一下吧,足够简洁。