|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
输入 1,2,3,4 个盘验证了都没错,后面的次数太多了,不验证了。
不知道我写的程序是否好理解。被那个统计搬运次数折腾了一晚上,才突然想到用全局变量来解。
#include <stdio.h>
int hanoi(int m,char x,char y,char z );
int s=0; //计算次数
void main()
{
int n,t;
char a='A',b='B',c='C'; //a b c分别表示3个位置
printf("please input a number:\n");
scanf("%d",&n);
hanoi(n, a, b, c);
printf("%d times\n",s);
getch(); //运行exe文件用于暂停屏幕的,对程序没影响
}
int hanoi(int m,char x,char y,char z)
{
if(m<=0)
{printf("error number\n");}
else if(m==1)
{
printf("%c->%c\n",x,z);s++;
}
else if (m==2)
{
printf("%c->%c\n",x,y);s++;
printf("%c->%c\n",x,z);s++;
printf("%c->%c\n",y,z);s++;
}
else
{
hanoi(m-1,x,z,y);
printf("%c->%c\n",x,z);s++;
hanoi(m-1,y,x,z);
}
} |
|