自用代码 内容和题目不完全相符
如果柱子标为ABC,要由A搬至C,在只有一个盘子时,就将它直接搬至C,当有两个盘子,就将B当作辅助柱。如果盘数超过两个,将第三个以下的盘子遮起来,就很简单了,每次处理两个盘子,也就是:A->B,A->C,B->C这三个步骤,而被遮住的部分,其实就是进入程式的递回处理。//摘自天秤libra
#include<stdio.h>
void hanota(int n,int a,int b,int c){//a-b a-c b-c
if(n==1)
printf("Move %d from %c to %c\n",n,a,c);
else{
hanota(n-1,a,c,b);
printf("Move %d from %c to %c\n",n,a,c);
hanota(n-1,b,a,c);
}
}
int main(){
int n;
scanf("%d",&n);
hanota(n,'a','b','c');
return 0;
}