C语言 梵天塔问题

2025-04-16 08:25:15
推荐回答(2个)
回答1:

#include

enum towe{A='X', B='Y', C='Z'};
void Move(int n, char z, char y);
void Hanoi(int n, char x, char y, char z);

int main(int argc, char* argv[])
{
int m = 0;
printf("Input a integer: \b");
scanf("%d",&m);
Hanoi(m,A,B,C);

return 0;
}

void Hanoi(int n, char x, char y, char z)
{
if (n)
{
Hanoi(n-1,x,z,y);//前n-1个盘从x移到z,y为中介
Move(n,x,y);//第n个从x移到y
Hanoi(n-1,z,y,x);//将z上的n-1个盘移到y,x 为中介
}
}
void Move(int n, char z, char y)
{
printf("将第%d个盘从%c移到%c\n",n,z,y);
}

回答2:

应该是这样了 我刚刚试过行
呵呵 你试一下啊

#include
void main()
{
void move(char a,char b);
void hanoi(int m,char one,char two,char three);
char a,b,c;
int m;
printf("input the number of disk:\n");
scanf("%d",&m);
printf("the number of disk is %d\n",m);
hanoi(m,'a','b','c');
return 0;
}
void move(char a,char b)
{printf("%c--%c>",a,b);
}

void hanoi(int m,char one,char two,char three)
{
if(m==1)
move(one,three);
else
{
hanoi(m-1,one,three,two);
move(one,three);
hanoi(m-1,one,two,three);
}}