汉罗塔递归c_递归实现汉诺塔问题

汉罗塔递归c_递归实现汉诺塔问题递归解决汉罗塔问题

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

思路

因为要将 A 柱上的圆盘全部转移到 C 柱上,所以先将最下面的最大的圆盘转移到 C 柱,将上面所有的圆盘看成一个整体,那么将这个整体转移到 B 柱上就可以将最大的圆盘转移到 C 柱了。然后,将现在 B 柱上最大的圆盘转移到 C 盘上需要借助 A 盘。重复上面的步骤,利用递归的思想。

代码

package Recursion;

public class _04_HanoiTower { 
   
    public static void main(String[] args) { 
   
        _05_Tower tower = new _05_Tower();
        tower.move(5,'A','B','C');
    }
}
package Recursion;

public class _05_Tower { 
   
    // num 表示要移动的个数, a,b,c 分别表示A塔, B塔,C塔
    public void move(int num, char a, char b, char c) { 
   
        //如果只有一个盘 num = 1
        if (num == 1) { 
   
            System.out.println(a + "->" + c);
        }else{ 
   
            //如果有多个盘,可以看成两个,最下面的和上面的所有盘
            //(1)先移动上面所有的盘到 b,借助 c
            move(num - 1, a, c, b);
            //(2)把最下面的的这个盘,移动到 c
            System.out.println(a + "->" + c);
            //(3)再把 b塔的所有盘,移动到c , 借助a
            move(num - 1, b, a, c);
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/182810.html原文链接:https://javaforall.net

(0)
上一篇 2022年10月12日 下午1:36
下一篇 2022年10月12日 下午1:36


相关推荐

  • 如何学习Android开发编程-初学者的5个步骤

    如何学习Android开发编程-初学者的5个步骤如何学习Android开发编程-初学者的5个步骤在本文中,您将发现如何学习Android开发编程。了解如何成为一名Android开发人员,并按照以下5个步骤操作。您是否想学习Android?如果是,但您不知道如何操作,则此文章适合您。它将帮助您以Android开发人员的身份开始冒险。准备?321如何学习Android开发-初学者的6个关键步骤1.看看…

    2022年5月10日
    44
  • java项目介绍_java项目介绍及创建[通俗易懂]

    java项目介绍_java项目介绍及创建[通俗易懂]大家配好环境,安装好编译器(eclipse)后,应该建立第一个项目“Helloword”一、在建立项目之前,来介绍一下项目的结构。1、class(类)项目中的最小单位,一个类中存放着相应的方法和量。2、package(包):存放类的空间。为了更好地组织类,Java提供了包机制。包是类的容器,用于分隔类名空间。如果没有指定包名,所有的示例都属于一个默认的无名包。3、folder(文件夹):存放包…

    2022年7月7日
    38
  • 详细总结BS架构和CS架构

    详细总结BS架构和CS架构文章目录CS架构CS结构CS的优缺点BS架构BS结构BS的优缺点CS与BS的对比总结文章内容学习百度百科和博主“向上人生”CS架构客户端-服务器,即Client-Server(C/S)结构。C/S结构通常采取两层结构。服务器负责数据的管理,客户端负责完成与用户的交互任务。CS结构在C/S结构中,应用程序分为两部分:服务器部分和客户端部分。服务器部分是多个用户共享的信息与功能,执行后台服务,如控制共享数据库的操作等;客户端部分为用户所专有,负责执行前台功能,在出错提示、在线帮助等方面都有强大

    2022年6月20日
    55
  • OpenClaw 万技归宗:13000+ Skills 完全掌控指南(进阶篇)

    OpenClaw 万技归宗:13000+ Skills 完全掌控指南(进阶篇)

    2026年3月13日
    2
  • DirectX修复工具使用技巧之一——解除被占用的文件,完整修复C++

    DirectX修复工具使用技巧之一——解除被占用的文件,完整修复C++最后更新:2020-9-23随着V4.0正式版的发布,近来有部分用户来咨询如何删除被占用的C++文件。在此我将以解决最常见的PC版QQ占用的3个C++2010文件(alt100.dll、msvcr100.dll、msvcp100.dll)为例,向大家演示一下操作方法,其他C++或文件的方法大同小异。此次操作以Windows10为例,其他系统相应参考即可。首先,当C++修复失败时,如果想查看具体的错误信息,请首先确定您使用的V4.0增强版或更高版本,老版本不支持此…

    2022年5月25日
    89
  • pytorch学习笔记七:torchvision.datasets.ImageFolder使用详解

    pytorch学习笔记七:torchvision.datasets.ImageFolder使用详解一、数据集组织方式ImageFolder是一个通用的数据加载器,它要求我们以下面这种格式来组织数据集的训练、验证或者测试图片。root/dog/xxx.pngroot/dog/xxy.pngroot/dog/xxz.pngroot/cat/123.pngroot/cat/nsdf3.pngroot/cat/asd932_.png对于上面的root,假设data文件夹在.py文件…

    2022年6月24日
    39

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号