如果A上有一个或多个盘子,将该盘子全部移动到C上保持从下往上从大到小且在移动过程中盘子也要遵循该原则,总共有A,B,C三根柱子,该如何移动
- 1个盘子只需要A–>C
- 2个需要A–>B,A–>C,B–>C
- 3个及以上只需要三步把
一、n-1个A–>B
二、A–>C
三、n-1个B–>C
代码就可以这样写
#include<stdio.h>
void move(int n,char A,char B,char C)//从A-->C借助B
{
if(n==1) printf("%c-->%c\n",A,C);
if(n>=2)
{
move(n-1,'A','C','B');
printf("%c-->%c\n",A,C);
move(n-1,'B','A','C');
}
}
int main()
{
int n;
printf("A盘上有几个盘子?请输入:");
scanf("%d",&n);
printf("移动的顺序为:\n");
move(n,'A','B','C');
return 0;
}