递归算法:梵塔问题

2021-12-21  本文已影响0人  疋瓞

1、环境配置:

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.png

5、反思总结:

递归就是自己调用自己。

上一篇 下一篇

猜你喜欢

热点阅读