汉诺塔 理解不了怎办???
#include<stdio.h>void hannuota(int n,char f1,char f2,char f3);
int main()
{
int n;
printf("请输入盘子的个数:");
scanf("%d",&n);
hannuota(n,'A','B','C');
return 0;
}
void hannuota(int n,char f1,char f2,char f3)
{
if (1==n) //他这明明 是将最上层的一个 盘子移过去,为何 却说是,最后只剩下一的个,移过去
{
printf("编号%d 从%c移动到%c\n",n,f1,f3);
}
else
{
hannuota(n-1,f1,f3,f2); //调用此函数说是为了借助f3从f1移到f2
//可是这调用的实参和形参都是颠倒的,也就是说第一次调用是移到了f2但是,第二次由于形参和
//实参的颠倒 ,表面上看去是已到了f2实际上是移到了f3.
printf("编号%d 从%c移动到%c\n",n,f1,f3);
hannuota(n-1,f2,f1,f3);
}
return;
}
//反正 光从 伪代码 去理解 源代码 不晓得为何 很难理解,,,很糊涂