递归之汉诺塔

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;
} 

在这里插入图片描述

发布了63 篇原创文章 · 获赞 3 · 访问量 1717

猜你喜欢

转载自blog.csdn.net/qq_34405401/article/details/103150150