递归-汉诺塔

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');
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容