汉诺塔问题-简单递归实现
直接写不同移动情况下的递归:
#include <bits/stdc++.h>
using namespace std;
int n;
//a-b-1;b-a-2;a-c-3;c-a-4;b-c-5;c-b-6;
void hano(int x,int y)
{
if(x==1)
{
if(y==1)
{
cout<<"从a移动到b"<<endl;
}
else if(y==2)
{
cout<<"从b移动到a"<<endl;
}
else if(y==3)
{
cout<<"从a移动到c"<<endl;
}
else if(y==4)
{
cout<<"从c移动到a"<<endl;
}
else if(y==5)
{
cout<<"从b移动到c"<<endl;
}
else if(y==6)
{
cout<<"从c移动到b"<<endl;
}
return;
}
if(y==1)//a-b
{
hano(x-1,3);
hano(1,1);
hano(x-1,6);
}
if(y==2)//
{
hano(x-1,1);
hano(1,2);
hano(x-1,6);
}
if(y==3)//
{
hano(x-1,1);
hano(1,3);
hano(x-1,5);
}
if(y==4)//c-a
{
hano(x-1,6);
hano(1,4);
hano(x-1,2);
}
if(y==5)//b-c
{
hano(x-1,2);
hano(1,5);
hano(x-1,3);
}
if(y==6)//c-b
{
hano(x-1,4);
hano(1,6);
hano(x-1,1);
}
}
int main()
{
hano(3,3);
return 0;
}

浙公网安备 33010602011771号