汉诺塔问题-简单递归实现

直接写不同移动情况下的递归:

#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;
}
posted @ 2023-04-07 22:28  cccjjh  阅读(23)  评论(0)    收藏  举报