美文网首页
递归-汉诺塔

递归-汉诺塔

作者: Co_zy | 来源:发表于2017-10-03 14:05 被阅读0次

    C++

    #include <iostream>
    using namespace std;
    
    //将src座上的n个盘子,以mid座位中转,移动到dest座
    void Hanoi(int n,char src,char mid,char dest)
    {
        if(n==1)
        {
            //直接将盘子从src移动到dest即可
            cout<<src<<"->"<<dest<<endl;
            //需要跳出,或者用else语句,可以不加return
            return;
        }
        Hanoi(n-1,src,dest,mid); //先将n-1个盘子从src移动到mid,可以用3个盘子来想象一下
        cout<<src<<"->"<<mid<<endl;//再将一个盘子从src移动到dest
        Hanoi(n-1,mid,src,dest);//最后将n-1个盘子从mid移动到dest
        //return;
    }
    
    int main()
    {
        int n;
        cin>>n; //n代表盘子数
        Hanoi(n,'A','B','C');
        return 0;
    }
    

    Java

    import java.io.*;
    class test  
    {
        public static void hanoi(int n,char a,char b,char c)
        {
            if(n==1)
                System.out.println(a + "->" + c);
            else
            {
                hanoi(n-1,a,c,b);
                System.out.println(a + "->" + c);
                hanoi(n-1,b,a,c);
            }
                
        }
        public static void main (String[] args) throws java.lang.Exception
        {
            hanoi(4,'A','B','C');
        }
    }
    

    相关文章

      网友评论

          本文标题:递归-汉诺塔

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