若只有一个盘子,则直接将a移到c。若盘子数量大于一,以三个盘子为例。A->B、A ->C、B->C。首先将 最小的盘子移到c,再将第二个盘子移到b,接着将c上的盘子移到b,然后将最大的盘子移到c。最后再将b上的两个盘子移到c上。方法依照上面所描述,其实就是进入递归过程
#include <stdio.h>
#include"stdafx.h"
void move(int n,char a,char b,char c)
{
if(n==1)
{
printf("%c->%c\n",a,c);
}
else if(n>1)
{
move(n-1,a,c,b);
printf("%c->%c\n",a,c);
move(n-1,b,a,c);
}
}
int main()
{
int n;
printf("需要移动块数:");
scanf("%d",&n);
move(n,'a','b','c');
return 0;
}