汉诺塔
#include <stdio.h>//(1) 把n-1个盘子由A 移到 B;
//(2) 把第n个盘子由 A移到 C;
//(3) 把n-1个盘子由B 移到 C;
//即
//(1)中间的一步是把最大的一个盘子由A移到C上去;
//(2)中间一步之上可以看成把A上n-1个盘子通过借助辅助塔(C塔)移到了B上,
//(3)中间一步之下可以看成把B上n-1个盘子通过借助辅助塔(A塔)移到了C上;
int hanoi(int n,char a,char b,char c);
int main()
{
int n;
printf("inupt a number:");
scanf("%d",&n);
hanoi(n,'a','b','c');
return 0;
}
int hanoi(int n,char a,char b,char c)
{
if(n==1)
{
printf("%c-->%c\n",a,c);
}
else if(n>=2)
{
hanoi(n-1,a,c,b);//bc换位
printf("%c-->%c\n",a,c);
hanoi(n-1,b,a,c);//ab换位
}
}
页:
[1]