经典递归问题学习之汉诺塔(河内塔)

递归经典例题 --- 汉诺塔(图文详解) 保姆级带你了解汉诺塔 阅读详情

 

package recursionDG;

public class HanNoTa {
    private int cont=1;
    public void hannota(int n,char from,char helper,char to){
        if (n==1){
            move(1,from,to);
        }else{
            hannota(n-1,from,to,helper);//第一步,现将n-1个盘子从A利用C到B
            move(n,from,to);// 将n盘子从 a挪到c
            hannota(n-1,helper,from,to);//在将n-1个盘子从b利于a挪到c
        }
    }
    public void move(int n,char from,char to){
        cont++;
        System.out.println("第"+cont+"步,从"+from+"------>"+to);
    }

    public static void main(String[] args) {
        HanNoTa a=new HanNoTa();
        a.hannota(3,'A','B','C');
    }
}

 

用递归算法的来解决汉诺塔问题 汉诺塔 汉诺塔是一个发源于印度的益智游戏,也叫河内塔。相传它源于印度神话中的大梵天创造的三个金刚柱,一根柱子上叠着上下从小到大64个黄金圆盘。大梵天命令婆罗门将这些圆盘按从小到大的顺序移动到另一根柱子上,其中大圆盘不能放在小圆盘上面。当这64个圆盘移动完的时候,世界就将毁灭。 汉诺塔问题源于印度神话 那么好多人会问64个圆盘移动到底会花多少时间?那么古代印度距离现在已经 阅读详情

相关推荐

Python实现汉诺塔问题,经典递归案例

汉诺塔 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 两则传说(感兴趣的可以了解下) 一 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创...

qq_43824618的博客 6634

汉诺塔问题c++递归解法

​汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 摘自百度百科 相信大家很多都玩过或者听说过汉诺塔,下面我来举个例子:(当圆盘数为3时) 目标:将所有圆盘移动至2号杆(第2根杆子) 第一步:将黄色圆盘移动至2号杆上 ...

fangyxp的博客 1万+

“双色河内塔”算法(双色汉诺塔)

“双色河内塔”算法(双色汉诺塔)

m0_54158068的博客 2441

C语言经典递归题目 -- 汉诺塔问题

目录题目描述画图分析思路总结代码实现总结 题目描述 汉诺塔问题起源于一个传说 传说,在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。 印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。 不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。 僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。 我们现

在平淡的日子里寻找存在的价值 1903

经典递归解决汉诺塔问题 python实现

什么是汉诺塔? 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。转化为数学问题 如下图所示,从左到右有A、B、C三根柱子,其中A柱子上面有从小叠到大的n个圆盘,

weepon的博客 6427

具体数学 递归问题1.1 从河内塔/汉诺塔开始

河内塔问题 在经典河内塔问题中,有3根柱子和N个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子。一开始,所有盘子自上而下按从大到小依次套在一根柱子上,现在想将所有的圆盘按照原来的位置从一根柱子移动到另一根柱子上,移动过程需要遵守一些规则: 1.每次只能移动一个盘子 2.盘子只能从柱子顶端滑出移动到下一根柱子 3.盘子只能叠在没有盘子的柱子或者比它大的盘子上 聚焦河内塔问题。河内塔的规则,限定了较大的圆盘要先转移到目标柱子(选择的任意一根柱子)上,这时直接转移是不可行的,一定要利用其他柱子。问题中只有3根柱

少年强,六月试锋芒。小弟踉跄学朝步,百战成钢,初登场。 888

经典递归:汉诺塔问题

从左到右有 A、B、C 三根柱子,其中 A 柱子上面有从小叠到大的 n 个圆盘,现要求将 A 柱子上的圆盘移到 C 柱子上去,期间只有一个原则:一次只能移到一个盘子且大盘子不能在小盘子上面,求移动的步骤和移动的次数。 首先我们要明确三个限制条件: 大盘子不能放在小盘子上 每回只能移动一个盘子 只能移动最顶端的盘子 递归是最优雅的解决方案。 汉诺塔问题归根结底就是在递归三个步骤,这很符合递归的思想。 三步走: 第一步:将 n-1 个盘子移到 B 第二步:将 1 个盘子移到 C

coder_Alger 的博客 1280

用递归思想解决河内塔问题

个人理解,递归的思想就是把一个大的问题化成与之形式相同的小问题。递归的形式千变万化,只有看过一定数量的代码之后才能想到,原来问题竟然可以这样解决!在某多数情况下,递归和循环有相似之处:都是执行相似的代码段,都有终止的条件。但是循环的形式相对固定,而递归的形式却十分灵活多变,需要有较活跃的思维才能想到。 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根

coding 菜鸟 记录学习历程 2549

递归——汉诺塔问题(结合代码理解,终于懂了)

在该汉诺塔问题中,假设是从A柱上将所有的圆盘移动到C柱上。图1中五个圆盘从上到下分别用1,2,3,4,5来表示,如1圆盘,2圆盘。开始柱是指开始移动前存放n个圆盘的柱子,中转柱是指中间状态存放(n -1)个盘子的柱子,目标柱是指n个盘子最终要移动到的柱子。以图1中五层汉诺塔为例,要将A柱(塔)上的五个圆盘移动到C柱(塔)上,则A柱为开始柱,有五个圆盘;B柱为中转柱,在中间状态的时候存放了1-4圆盘(共四个圆盘);C柱为目标柱,是五个圆盘最终存放的柱子。

weixin_37977006的博客 5833

递归经典例题:汉诺塔问题

问题描述 汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作? ———————————————— 版权声明:本文为优快云博主「qq1024734546」的原创文章,遵循CC 4.0 BY-SA版权协议,.

xu_haopeng的博客 2816

STK之Commu模块之三仿真卫星通信链路参数计算

考虑上述衰减的影响,可以得到卫星接收机输入端的载波功 [C] = [PT] +[GT] +[GR] -[L] -[L1] -[L2] (

juanhuokang2681的博客 8268

C语言每日一练——第88天:汉诺塔问题(河内塔)

史上最强汉诺塔(河内塔)问题讲解,代码详解+思路分析+动图演示+特性总结

Edison's 小宇宙 2万+

博途WinCC上位机避坑指南:从工控机选型到趋势图优化的完整流程

本文详细解析了博途WinCC上位机开发全流程,从工控机选型到趋势图优化的关键技巧。针对工业自动化场景,提供硬件配置指南、网络优化方案和性能提升策略,帮助工程师避开常见陷阱,实现稳定高效的HMI系统部署。特别强调PC Station与传统触摸屏的选型对比及SIMATIC NET配置优化。

pp12345的博客 279

C#之汉诺塔(河内塔)递归问题

汉诺塔问题与递归

zhou_zhou_936的博客 5479

嵌入式统一消息机制:模块解耦与零拷贝通信设计

在嵌入式系统开发中,模块间通信(IMC)是影响可维护性与实时性的关键环节。传统IPC方式如全局变量、信号量或Socket易导致高耦合、调试困难及跨平台适配成本高。统一消息机制通过逻辑地址抽象、标签/实体分离、路由表驱动等原理,实现控制流与数据流解耦,在裸机、RTOS及Linux用户态保持一致接口。其技术价值在于降低模块依赖复杂度、支持动态增删与分布式迁移,并通过零拷贝优化显著减少CPU与内存开销。典型应用场景涵盖工业网关、城域交换机、多核ARM边缘设备等资源受限环境,尤其适用于需长期稳定运行、快速迭代与混合

weixin_35257663的博客 296

基于多智能体深度强化学习的空地协同通信系统轨迹设计与访问控制

所属子方向: UAV assisted communication 名词注释 coordinated:协调、协同 base stations 基站,公用移动通信基站,是移动设备接入互联网的接口设备,是指在一定的无线电覆盖区中,通过移动通信交换中心,与移动电话终端之间进行信息传递的无线电收发信电台。 UAV-BS:无人机基站 cooperative-competitive game:合作竞争博弈 throughput :吞吐量,每秒比特数 bps,bits per second Determinis

skysys的研究小屋 4969

C++汉诺塔问题(河内塔)

C++汉诺塔问题(河内塔) 这是一个非常经典的递归问题。 递归:在函数内部又再次调用函数自身的问题 假设有n个盘子,需要把这些盘子从第一根起始柱A移动到第三根目标柱C中。 1、首先需要把n-1个盘子移动到第二根中转柱B上; 2、再把最后一个也就是最大的那一个盘子移动到第三根目标柱C上; 3、最后再把剩下的n-1个盘子移动到第三根目标柱C上。 我们定义f ( n ) f(n)f(n)是需要移动的次数; f ( 1 ) = 1 , f ( 2 ) = 3 , f ( 3

Smaircle的博客 2999

把 SM30 用顺:从表设计到权限与传输,全面掌握 SAP Table Maintenance Generator

摘要 SAP的Table Maintenance Generator(TMG)是为配置表维护需求设计的经典工具,能够生成标准化的维护对话框(SM30)。它支持单表、维护视图(多表关联)和视图簇(导航式维护)三种维护对象类型。使用TMG前需注意三个关键设置:1)表维护权限选项;2)交付类(决定数据传输行为);3)客户端字段配置。通过SE54/SE11生成维护对话框时,需选择维护类型(一步/两步)和记录例程(控制传输)。TMG生成的对象包含函数组、屏幕和处理模块,但部分标准框架不可修改。实际应用中,可通过参数事

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 176

通过河内塔问题来熟悉递归的用法

递归的应用 递归思想的概念:即将一个复杂问题分解成一系列小的问题,并且这些小问题都具有相同的情形。此时可运用递归的思想来解决更易于理解(但并不一定是效率最高的哦);      递归算法有两个关键点:

程序人生 2512

3D高斯压缩黑科技开源!1GB场景压到42MB,Web3D迎来“WebP时刻”——SOG格式深度解析

Web3D迎来革命性突破!PlayCanvas开源全新3D高斯泼溅压缩格式SOG,将1GB场景压缩至仅42MB,体积缩小95%,加载速度提升10倍+。SOG通过将3D数据编码为WebP纹理+元数据,实现GPU零拷贝实时渲染,完美兼容WebGL/WebGPU。实测显示,4百万高斯点的场景在手机上1.5秒内完成加载,内存占用降低83%。这一技术突破为电商展示、虚拟旅游、工业设计等领域带来新机遇,开发者可通过开源工具链快速集成。SOG被誉为"3D界的WebP",有望成为下一代3D互联网的基础设

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 867

Claude Code 错误解决方案 使用策略拒绝 Usage Policy refusal

摘要:本文分析了Claude Code API请求被拒绝的问题,当违反Usage Policy时会显示错误提示。根因包括请求内容违规、模型敏感度差异或历史消息影响。解决方案包括修改请求措辞、切换至Sonnet 4.5模型或开启新会话。文章详细追踪了错误链路,提供了核心代码分析,并给出验证方法和最佳实践建议,帮助用户避免触发API拒绝机制。

多媒体编程、网络编程、系统编程、网络安全编程、驱动编程 990

汉诺塔问题——C语言经典递归问题

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

qq1024734546的博客 3472

SAP 与 Palantir 合作全景解析:这不是普通集成,而是把 ERP、数据语义层、云迁移与企业级 AI 串成一条价值链

SAP与Palantir的战略合作聚焦企业数字化转型核心痛点,通过深度技术整合构建"数据-决策-执行"闭环。合作包含四大主线:云迁移连续性保障、SAP业务数据云与Palantir平台对接、联合工程开发、高监管行业优先落地。技术实现上采用SAP认证插件,支持双向数据交互和实时业务动作触发。该合作突破了传统ERP系统局限,将业务语义与AI执行相结合,特别适合制造业供应链优化、财务争议处理等高价值场景,为企业在云迁移过程中实现业务连续性与智能化升级提供新范式。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 193

走进递归经典——汉诺塔问题详解

目录传统艺能????过渡区????正片开始????问题????思路????实现???? 传统艺能???? 小编是大一菜鸟不赘述,欢迎大佬指点江山(QQ:1319365055) 此前博客点我!点我!请搜索博主 【知晓天空之蓝】点我!点我!请搜索博主 【知晓天空之蓝】或扫码进入! 乔乔的gitee代码库(打灰人 )欢迎访问,点我! (https://blog.51cto.com)感谢支持! 过渡区???? 现在是北京时间8:45,上午没有课,早操拉出去吹了个风,早饭买了个花卷带回寝室已经冷了,就上床肝博客了,

qq_61500888的博客 3166

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

C++解决河内塔问题

Today,让我来带大家学习怎样用C++实现折半查找 首先,我们来了解一下什么是河内塔,其实也叫汉诺塔。在桌子上有三根柱子,在第一根柱子上从下往上按大小顺序摆放着圆盘,然后把这些圆盘从下往上按大小顺序重新摆放在另外一根柱子上。并且规定,大盘子不能在小盘子上,每次只能移动一个圆盘。网上也有许多关于河内塔的代码,下面我先把代码放上来: #include "stdio.h" #include "stdlib.h" #include "time.h" #include<string> #in..

漫步网络 2012

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

汉诺塔问题——递归算法与非递归算法

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

weixin_74128452的博客 1856

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

上一篇: 蓝桥杯:矩阵扭转java改变思路
下一篇: 递归学习之欧几里德递归算法学习java
ArchitectDream
博客等级 码龄9年 48粉丝 288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值