1、环境配置:
- 系统:win10
- 编程语言:C++
- 编译器:DevC++
2、算法思想:
简化步骤,将问题看成是把n个铁片中的n-1个通过c从a移动到b,剩下的第n个移动从a移动到c,然后再把n-1个通过a从b移动到c,分成三步即可。
3、代码:
/*
梵塔问题
*/
#include<iostream>
using namespace std;
void f(char x,char y,char z,int n);//n为最底层汉诺塔铁片的编号,编号越小铁片越小越靠上!
int main(){
char x = 'a';
char y = 'b';
char z = 'c';
int h = 3; //汉诺塔深度
f(x,y,z,h);
return 0;
}
void f(char x,char y,char z,int n)//把n层hannio塔从x通过y移动到z;
{
if(n!= 0){
f(x,z,y,n-1);
cout<<n<<"通过"<<x<<"移动到"<<z<<endl;
f(y,x,z,n-1);
}
}
4、结果展示:
结果2.png5、反思总结:
递归就是自己调用自己。
网友评论