1.题目
2. 分析并解决
3. 算法分析
if(n>1)
{
先把A柱子上的前n-1个盘子从A借助C移到B
在把A柱子上的第n个盘子直接移到C
再把B柱子上的n-1个盘子在借助A移到C
}
4. 代码实现
/*
if(n>1)
{
先把A柱子上的前n-1个盘子从A借助C移到B
在把A柱子上的第n个盘子直接移到C
再把B柱子上的n-1个盘子在借助A移到C
}
*/
#include<stdio.h>
void hannuota(int n,char A,char B,char C)
{
/*
如果是一个盘子
直接将A柱子上的盘子从A移到C
否则
先把A柱子上的前n-1个盘子从A借助C移到B
直接将A柱子上的第n个盘子从A移到C
再把B柱子上的n-1个盘子在借助A移到C
*/
if(n == 1)
{
printf("将编号为%d的盘子直接从%c移到%c\n",n,A,C);
}
else
{
hannuota(n-1,A,C,B);
printf("将编号为%d的盘子直接从%c移到%c\n",n,A,C);
hannuota(n-1,B,A,C);
}
}
int main(){
char ch1='A';
char ch2='B';
char ch3='C';
int n;
printf("请输入要移动的盘子个数:");
scanf("%d",&n);
hannuota(n,'A','B','C');
}