美文网首页
递归应用-汉罗塔问题精讲

递归应用-汉罗塔问题精讲

作者: 始于尘埃 | 来源:发表于2019-07-27 16:37 被阅读0次

    有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆: 每次只能移动一个圆盘; 大盘不能叠在小盘上面。 提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆,但都必须遵循上述两条规则。

    问:如何移?最少要移动多少次?

    #include <iostream>
    using namespace std;
    
    int i = 1;
    void Hanoi(int n,char A,char B,char C){
        if(n == 1){
            cout<<"Move"<<n<<"from "<<A<<"to"<<B<<"\n";
        }
        else{
            Hanoi(n-1,A,C,B); //把n-1从A移动到C
            cout<<"Move"<<n<<"from "<<A<<"to"<<B<<"\n";//最后把n移动到B
            Hanoi(n-1,C,B,A);//把n-1从C移动到B 
        }
    } 
    
    int main(){
        Hanoi(5,'A','B','C');
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:递归应用-汉罗塔问题精讲

          本文链接:https://www.haomeiwen.com/subject/ofperctx.html