小白求助 请问hanoi塔的这个函数哪里有问题?
#include <stdio.h>void hanoi_tower(int n,int ox, int tx, int mx)
{
if(n<1){
printf("Error: n>=1\n");
}else if (n==1){
printf("%d->%d\n",ox,tx);
}else{
hanio_tower(n-1,ox,tx,mx);
printf("%d->%d\n",ox,tx);
hanoi_tower(n-1,tx,ox,mx);
}
}
int main(void)
{
int n;
printf("Enter the height of the tower");
scanf("%d",&n);
hanio_tower(n,1,3,2);
return 0;
}
请问哪里有问题?
你在你写的这个函数里调用这个函数怎么行 你要弄明白hanoi分三步,后面这三个参数的位置移动不要弄错了
从ox经过mx移动到tx,分三步:
第一步,把前n-1个从ox经过tx移动到mx;
第二步,把最下面的一个从ox移动到tx;
第三步,把n-1个从mx经过ox移动到tx
#include <stdio.h>
void hanoi_tower(int n,int ox, int tx, int mx)
{
if(n<1){
printf("Error: n>=1\n");
}else if (n==1){
printf("%d->%d\n",ox,tx);
}else{
hanoi_tower(n-1,ox,mx,tx);//拼写错误,hanoi_tower写成了hanio_tower;后面的参数位置也写错了,mx和tx写反了
printf("%d->%d\n",ox,tx);
hanoi_tower(n-1,mx,tx,ox);//后面的参数位置也写错了
}
}
int main(void)
{
int n;
printf("Enter the height of the tower");
scanf("%d",&n);
hanoi_tower(n,1,3,2);//拼写错误,hanoi_tower写成了hanio_tower
return 0;
} 无助的骚年 发表于 2020-10-11 22:24
你在你写的这个函数里调用这个函数怎么行
函数调用自己,这叫递归 sunrise085 发表于 2020-10-11 22:26
函数调用自己,这叫递归
好的,感谢,还没学,以为不行{:10_257:}
页:
[1]