汉罗塔(递归分治)

article/2025/6/16 8:56:57

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Java代码如下

 
public class Hanoi {//操作步骤数private static int steps = 1;public static void main(String[] args) {//盘子数目int diskNumber = 4;doTowers(diskNumber, 'A', 'B', 'C');}private static void doTowers(int diskNum, char from , char via, char to){if (diskNum>1){//针对盘子数目为diskNum的盘子堆,先将最上面的diskNum-1个盘子(即Disk 1~Disk diskNum-1)挪至中转位置doTowers(diskNum-1, from, to, via);//将剩余的最下面的一个盘子(即Disk diskNum)直接一步挪到位System.out.println("Step " + steps + ": " + "Disc" + diskNum + " " + from + "-->" + to);steps++;//将中转位置的diskNum-1个盘子(即Disk 1~Disk diskNum-1)挪至终点位置doTowers(diskNum-1, via, from, to);}//最上面那个碟子,即Disk1,从A挪到Celse {System.out.println("Step " + steps + ": "+ "Disk1 " + from + "-->" + to);steps++;}}}

测试:以4个盘子为例,运行结果如下
Step 1: Disk1 A–>B
Step 2: Disc2 A–>C
Step 3: Disk1 B–>C
Step 4: Disc3 A–>B
Step 5: Disk1 C–>A
Step 6: Disc2 C–>B
Step 7: Disk1 A–>B
Step 8: Disc4 A–>C
Step 9: Disk1 B–>C
Step 10: Disc2 B–>A
Step 11: Disk1 C–>A
Step 12: Disc3 B–>C
Step 13: Disk1 A–>B
Step 14: Disc2 A–>C
Step 15: Disk1 B–>C

汉诺塔的本质是3个栈
维基的定义只简单提到了汉诺塔的规则, 但是并没有揭示它的本质. 下面我们来分析它的本质.

  1.每次只能移动1个盘:     也就说不能两个盘一齐移动, 必须按顺序1个1个套在柱子上,  而且只能从柱子的上方套入, 也能只能从柱子的上方取出.这明显就是1个先进后出的线性结构了,  因为出入口只有1个啊, 柱子的下方是不能放入和取出盘子的.先进后出的线性结构就是栈了,  套入柱子和取出盘子就是对应的压栈和出栈动作.   如果读者之前没有了解过栈的话, 个人建议先去了解下栈, 然后再往下看.2. 大盘不能套在小盘上面代表这3个栈中, 如果不是空栈, 那么压栈的元素必须比栈顶元素小, 然后才允许压栈.   这就保证栈里面的元素是从小到大排序的.总结:  汉诺塔的本质就是3个栈,  而且压栈的元素必须比栈顶元素(如果存在)小.

http://chatgpt.dhexx.cn/article/JFX313Y3.shtml

相关文章

汉诺塔(Hanoi)问题,Java实现,C语言实现,Python实现!!!

目录 一、汉诺塔的玩法 二、汉诺塔的逻辑 三、代码实现 四、运行结果 五、总结 一、汉诺塔的玩法 汉诺塔(Tower of Hanoi),又称河内塔,是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子&#x…

Java基础语法(汉罗塔)

Java基础语法(汉罗塔) 1 起源2 需求3 分析3.1 1个碟子3.2 2个碟子3.3 3个碟子3.4 4个碟子3.5 规律 4 代码实现:直接算法5 代码实现封装:栈的思想 1 起源 汉罗塔(又称河内塔)问题是源于印度一个古老传说的益…

《经典递归问题:汉罗塔》

🌠作者:TheMythWS. 🎆专栏:《JavaSE》 🎇座右铭:不走心的努力都是在敷衍自己,让自己所做的选择,熠熠发光。 目录 ✨汉罗塔的介绍 图解游戏​ ✨N层汉罗塔需移动的次数 ✨汉罗塔的…

数据链路层 功能概述

数据链路层的研究思想 数据链路层基本概念 数据链路层功能概述 数据链路层功能概述

数据链路层功能概述、封装成帧与透明传输

你一定要做自己,做自己喜欢的事,然后把自己交给命运 文章目录 本章启航思维导图数据链路层数据链路层基本概念数据链路层功能概述封装成帧透明传输组帧的四种方法字符计数法字符填充法零比特填充法违规编码法 本章启航思维导图 数据链路层 数据链路层基…

【计算机网络】数据链路层——数据链路层功能/组帧/差错控制

文章目录 数据链路层数据链路层的功能为网络层提供服务链路管理帧定界、帧同步与透明传输流量控制 组帧字符计数法字符填充的首尾定界符法零比特填充的首尾标志法违规编码法 差错控制检错编码奇偶校验码循环冗余码 纠错编码 数据链路层 数据链路层的功能 数据链路层在物理层提…

19数据链路层的功能

1、数据链路层的功能 数据链路层在物理层提供服务的基础上向网络层提供服务,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造成逻辑上无差错的数据链路,使之对网络层表现为一条无差错的链路。 2、为网络层…

计算机网络——数据链路层功能概述、封装成帧、差错控制、流量控制与可靠传输机制

文章目录 前言一、数据链路层功能概述二、封装成帧1、透明传输2、封装成帧3、组帧的方法⑴字符计数法⑵字符/节填充法⑶零比特填充法⑷违规编码法 三、差错控制1、差错由来2、检错编码⑴奇偶校验码⑵循环冗余码 3、纠错编码——海明码 四、流量控制与可靠传输机制1、停止等待协…

计算机网络【数据链路层的功能】

计算机网络【数据链路层的功能】 数据链路层基本概念数据链路层功能概述封装成帧透明传输字符计数法字符填充法零比特填充法 差错控制差错从何而来?CRC 循环冗余码 数据链路层基本概念 数据链路层使用的信道主要有一下两种类型: 点对点信道&#xff1a…

数据链路层主要功能

透明传输 个人理解,透明传输其实就是指无论是什么报文都可以传输,非透明传输就是指某些特殊字符不能传输,在计算机网络中,透明传输在数据链路层提到过,在数据链路层将网络层协议封装成帧时,会在首部和尾部分…

数据链路层(内容超多哦)

数据链路层——交换机 1. 数据链路概述2. 以太网2.1 以太网帧格式2.2 交换机设备简介2.3 交换机的工作原理2.4 交换机以太网的工作模式2.5 配置前的准备 3. 命令行的使用 1. 数据链路概述 数据链路层的功能:1.数据链路的建立、维护与拆除 2.帧包装、帧传输、帧同步…

计算机网络:数据链路层功能

文章目录 1.为网络层提供服务2.链路管理3.帧定界、帧同步与透明传输4.流量控制5.差错控制 数据链路层在物理层提供服务的基础上向网络层提供服务,其主要作用是加强物理层传输原始比特流的功能,将物理层提供的可能出错的物理连接改造为逻辑上无差错的数据…

计算机网络-数据链路层功能概述

数据链路层的研究思想 基本概念 结点: 主机, 路由器 链路: 网络中两个结点之间的物理通道, 链路的传输介质主要有双绞线, 光纤 和微波, 分为有线链路和无线链路 数据链路: 网络中两个结点的逻辑通道, 把现实控制数据传输协议的硬件和软件加到链路上就构成了数据链路 帧: 链…

第三章:数据链路层(一)

数据链路层基本概念 结点:主机、路由器 链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。 数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构…

随机信号的特征—(自相关函数\互相关函数、协方差矩阵、相关矩阵\相关系数矩阵\相关系数)

在学习概率统计之前,我学习的都是确定的函数。概率统计讨论了一次取值时获得的值是不确定的,而随机过程讨论了不确定会发生哪个时间函数。 每个x(t)函数(样本函数)就是实际发生的一个表达式确定的函数,对每个x(t)的处理,都是与之…

使用 VPN 你一定要了解这几个真相!

关注公众号,回复“1024”获取2TB学习资源! 什么是 VPN? VPN 是一种隐藏您的Internet 协议 (IP) 地址的服务。这使您可以匿名浏览互联网,因为没有人可以将您的数据链接到您的IP地址。 要了解VPN的作用,您只需分解“虚拟…

苹果Mac电脑L2TP连接公司内部网络失败解决方案

苹果Mac电脑L2TP连接公司内部网络 苹果Mac电脑的L2TP连接公司内部网络失败是一种常见的问题,可能会导致用户无法访问公司内部资源。以下是一些可能的解决方案,可以尝试解决这个问题: 检查网络连接:首先要确保你的Mac电脑已经连接…

mac电脑升级Monterey12.1版之后L2TP连接公司内网后无法正常访问的问题解决

公司内网设置: L2TP,无共享密钥。 mac版本: macOS Monterey 版本12.6 审核人员看这里,文章中的VPN不是翻墙用的,是远程连接公司内网环境用的。 配置连接公司内容 1、系统偏好设置 → 网络; 2、点击左下角的…

传统网络安全设备-VPN介绍

前言 VPN设备介绍 定义 虚拟专用网络指的是在公用网络上建立专用网络的技术。之所以称为虚拟网主要是因为整个VPN网络的任意两个节点之间的连接并没有传统专网所需的端到端的物理链路,而是架构在公用网络服务商所提供的网络平台之上的逻辑网络,用户数…

US5M-ASEMI贴片快恢复二极管US5M

编辑:ll US5M-ASEMI贴片快恢复二极管US5M 型号:US5M 品牌:ASEMI 封装:SMC 电流:5A 电压:1000V 恢复时间:50ns 正向电压: 引脚数量:2 芯片个数:1 芯…