现有3个柱子A、B、C,有n个圆盘在A柱上,要实现n个圆盘要从A柱从大到小移动到C柱。
思路:先将n-1个圆盘移动到B柱上,然后将最后一个圆盘移动到C柱上,最后将B柱上的n-1个圆盘移动到C柱。
#include <stdio.h>标签:移动,圆盘,Hanoi,C语言,char,如何,int,汉诺塔,柱上 From: https://blog.51cto.com/u_15927947/6020150
void move(char A, char C, int n)
{
printf("把第%d个圆盘从%c-->%c\n", n,A, C);
}
void Hanoi(char A, char B, char C, int n)
{
if (n == 1)
{
move(A, C, n);
}
else
{
//n-1个圆盘借助C移动到B
Hanoi(A, C, B, n-1);
//最后一个圆盘从A移动到C
move(A, C, n);
//n-1个圆盘从B借助A移动到C
Hanoi(B, A, C, n - 1);
}
}
int main()
{
int n = 0;
printf("输入A柱上圆盘的个数\n");
scanf("%d",&n);
Hanoi('A', 'B', 'C', n);
return 0;
}