求解汉诺塔问题(提示, 使用递归)

经典递归算法—汉诺塔问题(含代码示例) 相传在古印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏。该游戏是在一块铜板装置上,有三根杆(编号A、B、C),在A杆自下而上、由大到小按顺序放置64个金盘(如图1)。游戏的目标:把A杆上的金盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。 阅读详情

汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。

大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。

大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。

并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。

问应该如何操作?

package com.test;
import java.util.Scanner;
public class Test {
    //主方法
    public static void main(String[] args){
       Scanner in = new Scanner(System.in);
       System.out.println("请输入汉诺塔的层数:");
       int n = in.nextInt();  //接收一个正整数
       hanoi(n,'A','B','C');  //调用汉诺塔方法
    }
    //汉诺塔方法
    public static void hanoi(int n,char x,char y,char z){
        System.out.println("移动结果:");
        if (n == 1){
            move(x,z);  //将x上的盘子移到z上
        }
        else{
            hanoi(n - 1,x,z,y);  //将n-1个盘子借助z,从x移到y上
            move(x,z);  //将x上的盘子移到z上
            hanoi(n - 1,y,x,z);  //将n-1个盘子借助x,从y移到z上

        }
    }
    //移动方法
    public static void move(char x,char y){
        System.out.println(x+"->"+y);
    }
}

【数据结构】汉诺塔问题(丰富图解) 经典汉诺塔问题,丰富图解,助你理解。 阅读详情

相关推荐

递归经典例题 --- 汉诺塔(图文详解)

保姆级带你了解汉诺塔

Weraphael的博客 1万+

汉诺塔——递归算法(c语言实现)

真的很难,自己总结一下,方便自己看也分享给各位。

m0_74389379的博客 1万+

递归求解汉诺塔问题(详细解答)

汉诺塔移动步数的计算 具体汉诺塔的规则大家自行百度吧,就不介绍了,这里介绍一下如何求解汉诺塔移动步数的计算思想。 当汉诺塔层数为一层时,很显然只需要一步,直接从A杆移动到C杆 当层数为两层时,则需要三步,先将第一个从A杆移到B杆,然后将第二个从A杆移到C杆,最后将第一个从A杆移到C杆,到这里有没有发现规律呢? 当层数为三层时,首先要把前两层移到B杆上,这样就可以把第三层移到C杆上了,然后再将这两层从B杆移到C杆上,上面讨论了,将两层汉诺塔从一个杆移动到另一个杆上面需要三步,所以当层数为三层时,就需要3+

qq_51471471的博客 5307

汉诺塔的图解递归算法

汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根...

Rnan_prince的博客 10万+

汉诺塔问题的求解与分析

一、递归算法介绍         这篇文章讲的是一个古老而又经典的汉诺塔问题,他是递归算法的一个很好的应用实例。有关递归函数的介绍,在使用递归函数求解字符串的逆置问题文章中介绍过。递归思想是来解决可计算问题的,他的根本特征在于逐步的计算和分解这一计算,通过将某一大问题不断的分解成逻辑上相同的小问题,然后对小问题的求解进而获得最终的答案。使用递归算法的程序在形式上往往都比较简洁明了,这也正是他的价值所在。(更好地阅读体验,请访问程

IT之旅 的博客 7802

【汉诺塔问题】递归算法求解汉诺塔问题

大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。有3根柱子,以及N块大小不同的圆盘。起始状态时,这N块圆盘按照从大到小的顺序依次叠在柱子A上面。现在,要将A柱子上面的所有圆盘移动到C柱子上面。移动柱子的过程中,需要满足条件:每一次只能够移动【1块】圆盘。所有状态下,大的圆盘都不能放在小的圆盘上面。...

✅ Java 开发工程师 1480

递归之汉诺塔算法

汉诺塔问题详解 如果你有耐心翻到这里看到这个回答,相信大部分前面的回答并没有让你完全明白汉诺塔的递归算法应该怎么理解,那么我希望这个答案会是你浏览的最后一个(不知道怎么打删除线…)。ps:篇幅稍微有点长,请耐心阅读,相信我,会有价值的。(毕竟是个人理解,若其中有不正确的地方望大家多多指正哈) 要用程序来解决这个问题,我们先定义一个移动函数:**move(移动数,开始柱,中转柱,目标柱),**例如 move(2,A,B,C) 表示将2个盘子从A柱(开始柱)借助B柱(中转柱)移动到C柱(目标柱)。 关于开始柱,

qq_47897078的博客 1万+

华为eNSP Pro实战:NE/CE设备SSH远程配置避坑指南

本文针对华为eNSP Pro用户在模拟多台NE路由器或CE交换机时遇到的浏览器卡顿问题,提供了详细的SSH远程配置避坑指南。通过对比浏览器与SSH客户端的资源占用和操作体验,文章详细阐述了为NE和CE设备配置SSH服务的关键步骤、命令差异及常见错误排查方法,旨在帮助用户提升实验效率,实现稳定高效的远程管理。

weixin_29196891的博客 221

java实现求解汉诺塔问题(提示, 使用递归)

实现代码: 求解汉诺塔问题(提示, 使用递归) 汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。 大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。 大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。 并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。 问应该...

ludulge的博客 933

DRAM 埋入式字线(Buried Wordline)技术深度解析:从二维平面到三维凹槽

埋入式字线(bWL)及其核心的埋入式沟道阵列晶体管(BCAT)架构,无疑是 DRAM 发展史上的一次关键性革命。它在约 40nm 技术节点被行业主流采纳,成功地帮助 DRAM 产业克服了传统平面晶体管的物理缩放极限。力挽狂澜的续命技术:bWL 通过引入三维沟道结构,从根本上解决了由短沟道效应和漏电流失控引发的数据保持危机,为经典的 1T1C(单晶体管 - 单电容)DRAM 单元架构延续了超过十年的生命力。协同优化的基石技术。

m0_37606066的博客 3328

GD32F103实战:用ADC+DMA实现高精度多通道电压采集与OLED实时显示(附完整工程)

本文详细介绍了如何利用GD32F103的ADC+DMA技术实现高精度多通道电压采集,并通过OLED实时显示数据。文章包含硬件架构设计、ADC配置技巧、DMA传输优化及显示系统实现方案,提供完整工程代码和调试指南,适用于工业传感器和环境监测设备开发。

weixin_42567497的博客 400

Java实现:求解汉诺塔问题(提示, 使用递归)

package cn.bit; import java.util.Scanner; //图解:https://dmego.me/2016/10/16/hanoi.html //实现代码: 求解汉诺塔问题(提示, 使用递归) //汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。 //大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺...

以梦为马&不负韶华的博客 531

Edge浏览器IE模式失效?最新142版本隐藏按钮的3种解决方案

本文针对Edge浏览器142版本中IE模式按钮消失的问题,提供了3种实用解决方案,包括注册表修改、手动添加网站到IE模式列表和企业策略部署方案,帮助用户解决兼容性问题,确保老旧系统正常访问。

weixin_28308325的博客 503

汉诺塔问题递归算法分析

汉诺塔问题递归算法分析: (转自http://www.360doc.com/content/12/0727/11/219024_226737868.shtml)递归实现了某种类型的螺旋状while循环。while循环在循环体每次执行时必须取得某种进展,逐步迫近循环终止条件。递归函数也是如此,它在每次递归调用后必须越来越接近某种限制条件。当递归函数符合这个限制条件时,它便不在调用自身。递归算法的特点

SinvanChong的博客 1474

AI Agent在智能投研中的实战:多智能体信息整合与策略生成

那么,什么是AI Agent?简单来说,AI Agent是一种能够感知环境、做出决策并采取行动的自主系统。自主性:能够在没有人类直接干预的情况下运行,对自己的行为和内部状态有一定的控制权。反应性:能够感知环境的变化,并及时做出反应。主动性:不仅能够对环境变化做出反应,还能够主动地设定目标并采取行动实现这些目标。社会性:能够与其他Agent(包括人类和人工智能)进行交互、协作和竞争。它们可以全天候不间断地监控和处理海量信息,大大提升信息处理能力;

AI大模型应用之禅 188

AI驱动视频剪辑自动化:cutcli命令行工具重塑工作流

视频剪辑自动化是提升内容生产效率的关键技术,其核心原理在于通过程序化指令替代手动操作,将创意执行过程代码化。这项技术的价值在于能够将创作者从重复性劳动中解放,实现批量化、标准化的视频内容生产,尤其适用于社交媒体运营、产品宣传等高频产出场景。通过封装专业软件(如剪映/CapCut)的底层草稿格式,自动化工具在保证工业级渲染质量的同时,提供了可编辑的中间态,为AI智能体(Agent)与生产工具的结合提供了清晰接口。本文以cutcli为例,深入探讨了如何通过命令行工具和AI助手,构建从自然语言指令到可编辑视频草稿

weixin_27210125的博客 1064

递归解决汉诺塔问题

何为汉诺塔问题: 汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作? 代码如下 #include<stdio.h&gt...

哈密瓜味的猪 268

使用xlwings在Python中对Excel表格进行操作是非常方便的,可以实现自动化处理、批量数据处理等功能

使用xlwings在Python中对Excel表格进行操作是非常方便的,可以实现自动化处理、批量数据处理等功能。本篇文章主要介绍如何使用xlwings对Excel表格进行多行多列数据设置和操作,并给出相应的源代码。接着,我们可以对这个范围内的所有单元格进行操作,如设置字体颜色、填充颜色、对齐方式等。以上就是使用xlwings对Excel表格进行多行多列数据操作和设置字体颜色、填充色和对齐方式的全部内容。最后,我们可以将数据写入到单元格中,也可以从单元格中读取数据。在Excel中,可以通过。

BUG?不存在的! 713

汉诺塔问题(递归算法思想)

🛕“汉诺塔问题”是运用递归思想解决问题的经典例题,非常值得我们去深入地去理解递归的思想!递归的核心思想就是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。1、第一步移动n-1小盘子从左(A)移动到中间(B)(又可以递归)出第一、二、三步,一直递推,直到左(A)上除了底下那个外,其它全部移动到中间(B)2、第二步移动第n个小盘子从左(A)移动到右(C)(直接实现)3、第三步移动n-1小盘子从中间(B)移动到右(C)(又可以递归)

QZW的博客 3493

FastAPI基础项目:仿头条新闻的web项目,实现基本的新闻列表页和详情页查看功能

该项目是一个基于FastAPI和MySQL的新闻应用入门项目。主要包含新闻列表页和详情页两个功能页面。项目结构清晰,包含主应用文件、数据库脚本和HTML模板。使用SQLAlchemy进行数据库操作,通过脚本可自动生成50条示例新闻数据。环境配置简单,仅需安装FastAPI、MySQL驱动等基础依赖,通过.env文件管理数据库连接。该项目适合作为FastAPI+MySQL的入门学习案例,展示了基本的CRUD操作、分页查询和模板渲染功能。

数据知道的博客 4427

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

递归求解汉诺塔问题

前言 博主之前有写过关于递归问题的思维模式: 递归的思路 下面将用这种思维模式来求解经典汉诺塔问题。 一、问题描述 汉诺塔(又称河内塔)问题是源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。 大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。 并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 问应该如何操作? 玩法如下: 1.有三根杆子A,B,C。A杆上有若干碟子 2.每次移动一块碟子,小的只能叠在大的上

VIBE的博客 2529

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

汉诺塔问题求解(递归)

人工智能,零基础入门!http://www.captainbed.net/inner 实例说明 汉诺塔问题的描述如下:有A、B和C 3跟柱子,在A上从下往上按照从小到大的顺序放着64个圆盘,以B为中介,把盘子全部移动到C上。移动过程中,要求任意盘子的下面要么没有盘子,要么只能有比它大的盘子。本实例将演示如何求解3阶汉诺塔问题。 实现过程 新建一个类HanoiTower。在Han...

code_monkey的博客 13万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

图解汉诺塔问题(递归求解)

汉诺塔:汉诺塔(Tower of Hanoi)源于印度传说中,大梵天创造世界时造了三根金钢石柱子,其中一根柱子自底向上叠着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。                        --引用维基百科单看这个问题描述有点让人抓瞎,这是当然,无论多么简单的问题描述...

WZQ的博客 16万+

汉诺塔问题(递归算法)

汉诺塔(Tower of Hanoi)传说越南河内某间寺院有三根银棒,上串 64 个金盘。寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子;预言说当这些盘子移动完毕,世界就会灭亡。这个传说叫做梵天寺之塔问题若传说属实,僧侣们需要步才能完成这个任务;若他们每秒可完成一个盘子的移动,就需要 5845 亿年才能完成。整个宇宙现在也不过 137 亿年。                       ...

= = 1万+

算法:图解汉诺塔问题(递归求解)

汉诺塔:汉诺塔(Tower of Hanoi)源于印度传说中,大梵天创造世界时造了三根金钢石柱子,其中一根柱子自底向上叠着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 下面来对汉诺塔问题进行解释和建立模型 这是示意图,a是起始柱,c是目标柱,b起到中转作用 在进行转移操作时,都必须确保大盘在小盘下面,且每次只能移动一个圆盘,最终c柱上有所有的盘子且也是从上到下按从小到大的顺序。 下面我用图来描.

OceanStar的博客 4745

数据结构:汉诺塔问题的递归求解和分析

以汉诺塔问题为例,分析递归的求解方法和算法效率

计算机科学、人工智能、数据分析和大数据方向的研发和教学。 1455
上一篇: 实现代码: 求斐波那契数列的第 N 项
下一篇: 实现代码: 青蛙跳台阶问题(提示, 使用递归)
helloword233
博客等级 码龄7年 19粉丝 135原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值