云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
//汉诺塔c++程序
#include<iostream>
using namespace std;
void hanoi(int,int,int,int);//用于递归的函数
void print(int,int);//从一个桩移动到另一个桩
int A=1,B=2,C=3;
static int counter = 0;//用于计算总共移动的次数
int main()
{
int n;//移动的盘数
cout<<"please enter the quantity of the plates:";
cin>>n;
hanoi(n,A,B,C);
cout<<"Totally used "<<counter<<" steps."<<endl;
return 0;
}
void print(int A,int C)//将盘从A移动到C
{
cout<<"plate "<<A<<":"<<A<<"-->"<<C<<endl;
counter+=1;
}
void hanoi(int n,int A,int B,int C)
{
if(n==1)
print(A,C);
else
{
hanoi(n-1,A,C,B);
print(A,C);
hanoi(n-1,B,A,C);
}
}
2019-07-17 22:55:28