汉诺塔的问题很复杂,但是用递归来解决就很容易。
一共三个柱子,分别为A,B,C,最初A柱子上有n个盘子,从n到1计。
对三种情况进行处理:
1.A柱子上只有一个盘子时候,将该盘子移到C柱子;
2.借助C柱子将A柱子上的n-1个盘子移到B柱子;
3.借助A柱子将B柱子上的n-1个盘子移到C柱子。
以此实现递归
#include <iostream>
using namespace std;
void Hannuo(int n,char A,char B,char C)
{
if(n==1) printf("将圆盘%d从%c移动到%c\n",n,A,C);
else
{
Hannuo(n-1,A,C,B);
printf("将圆盘%d从%c移动到%c\n",n,A,C);
Hannuo(n-1,B,A,C);
}
}
int main()
{
int n;
cin>>n;
Hannuo(n,'A','B','C');
system("pause");
return 0;
}
感谢你的到来!!!