|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
红色字体是问题
#include<stdio.h>
/*
汉诺塔问题 ;原来a上有n个盘子将之放到另一个柱子上,一直都是小上大下,可以使用三个柱子。需要打印移动次数和流程
a b c
*/
void hanoi(int n,char a,char b,char c);
void print(char x,char y); //打印流程
int count=1;//纪录次数
int main()
{
int num;
printf("Please enter the number of plate:\n");
scanf("%d",&num);
hanoi(num,'a','b','c'); 这一步加单引号是什么意思
return 0;
}
void hanoi(int n,char a,char b,char c) //这里代表将a柱子上的盘子借助b柱子移动到c柱子
{
if(n==1)
{
print(a,c); //如果是一个盘子直接将a柱子上的盘子移动到c
}
else
{
hanoi(n-1,a,c,b);//将a柱子上n-1个盘子借助c柱子,移动到b柱子
print(a,c); //再直接将a柱子上的最后一个盘子移动到c
hanoi(n-1,b,a,c); //然后将b柱子上的n-1个盘子借助a移动到c
}
}
void print(char x,char y)
{
printf("第%d次移动:%c to %c\n",count++,x,y);
}
void hanoi(int n,char a,char b,char c);
hanoi(num,'a','b','c');
平常我们先定义变量类型和调用参数
这里为了节省代码,将三个调用参数('a','b','c')直接调入函数 hanoi
|
|