欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

递归之汉诺塔

程序员文章站 2022-04-13 15:59:41
...

1.汉诺塔

/*
有A,B,C三个柱子,将A柱子上的N个盘子(从大到小排列)移到C柱子上,每次只允许移动一个盘子,并且保证每个柱子上的盘子的排列都是从大到小
url:https://www.cnblogs.com/zcy773883/p/10807599.html 
*/
#include<iostream>
using namespace std;
void hanoi(int n,char a,char b,char c)
{
	if(n==1)
		cout<<"将第"<<n<<"个盘子从"<<a<<"移到"<<c<<endl;
	else{
		hanoi(n-1,a,c,b);//a借助c将 n-1 盘子移到 b 上  
		cout<<"将第"<<n<<"个盘子从"<<a<<"移到"<<c<<endl;//将剩余的一个盘子移到 c 上去 
		hanoi(n-1,b,a,c);//将 b 上的 n-1 个盘子移到 c 上 
	} 
}
int main()
{
	int n;
	cin>>n;
	char a='a',b='b',c='c';
	hanoi(n,a,b,c);
	return 0;
} 

递归之汉诺塔

相关标签: 汉诺塔 递归