《经典递归问题:汉罗塔》
📅 2026/7/4 10:00:13
👁️ 次浏览
作者TheMythWS.座右铭不走心的努力都是在敷衍自己让自己所做的选择熠熠发光。目录✨汉罗塔的介绍图解游戏✨N层汉罗塔需移动的次数✨汉罗塔的代码实现c语言实现运行结果java语言实现运行结果✨汉罗塔的介绍汉诺塔Tower of Hanoi又称河内塔是一个源于印度古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定在小圆盘上不能放大圆盘在三根柱子之间一次只能移动一个圆盘。图解游戏✨N层汉罗塔需移动的次数✨汉罗塔的代码实现c语言实现#define _CRT_SECURE_NO_WARNINGS 1 #includestdio.h /* 思路1 * 将1~N层从A-B A为源B为目的C作为辅助 角色在变化 * 等价于 * 1、把1~N-1层从A-CA为源B为辅助C为目的 * 2、把第N层从A-B 此时没有角色变化 * 3、把1~N-1层从C-BA为辅助B为目的C为源 思路2 * 将1~N层从A-C A为源B作为辅助C为目的 角色在变化 * 等价于 * 1、把1~N-1层从A-BA为源B为目的C为辅助 * 2、把第N层从A-C 此时没有角色变化 * 3、把1~N-1层从B-CA为辅助B作为源C作为目的 */ /* 将N个盘子从source移动到target的路径的打印 N 初始的N个从小到大的盘子N是最大编号 from 原始柱子 to 目标柱子 help 辅助的主子 */ //思路1 void printHannoiTower1(int n, char from[], char to[], char help[]) {//将1~N层从A-B A为源B为目的C作为辅助 角色在变化 if (n 1) { printf(move %d from %s to %s\n, n, from, to);//把第N层从A-B return; } else { printHannoiTower1(n - 1, from, help, to);//把1~N-1层从A-CA为源B为辅助C为目的 printf(move %d from %s to %s\n, n, from, to);//N可以顺利达到target只需要1步完成 printHannoiTower1(n - 1, help, to, from);//把1~N-1层从C-BA为辅助B为目的C为源 } } //思路2 void printHannoiTower2(int n, char from[], char help[], char to[]) {//将1~N层从A-C A为源B作为辅助C为目的 角色在变化 if (n1) { printf(move %d from %s to %s\n, n, from, to);//把第N层从A-C return; } else { printHannoiTower2(n - 1, from, to, help);//把1~N-1层从A-BA为源B为目的C为辅助 printf(move %d from %s to %s\n, n, from, to);//N可以顺利达到target只需要1步完成 printHannoiTower2(n - 1, help, from, to);//把1~N-1层从B-CA为辅助B作为源C作为目的 } } int main() { printHannoiTower1(3, A, B, C); printf(------------------\n); printHannoiTower2(3, A, B, C); return 0; }运行结果java语言实现package com.themyth.test; /** * 找重复 * 1.找到一种划分方法 * 2.找到递推公式或者等价转化 * 都是父问题转化为求解子问题 * 找变化的量 * 变化的量通常要作为参数 * 找出口 * 根据参数变化的趋势对边界进行控制适时终止递归 *思路1 * 将1~N层从A-B A为源B为目的C作为辅助 角色在变化 * 等价于 * 1、把1~N-1层从A-CA为源B为辅助C为目的 * 2、把第N层从A-B * 3、把1~N-1层从C-BA为辅助B为目的C为源 * 思路2 * 将1~N层从A-C A为源B作为辅助C为目的 角色在变化 * 等价于 * 1、把1~N-1层从A-BA为源B为目的C为辅助 * 2、把第N层从A-C * 3、把1~N-1层从B-CA为辅助B作为源C作为目的 * */ /** * 将N个盘子从source移动到target的路径的打印 * N 初始的N个从小到大的盘子N是最大编号 from 原始柱子 to 目标柱子 help 辅助的主子 */ public class 汉诺塔 { public static void main(String[] args) { //思路1C作为辅助 printHannoiTower1(3,A,B,C); System.out.println(----------------------------); //思路2B作为辅助 printHannoiTower2(3,A,B,C); } //注意角色的变化 private static void printHannoiTower1(int N, String from, String to, String help) {// from源、to目的、help辅助 if (N 1) { System.out.println(move N from from to to); return; }else { printHannoiTower1(N-1,from,help,to);// 先把N-1个盘子移动到辅助空间上去源、辅助、目的 System.out.println(move N from from to to);// N可以顺利达到target只需要1步完成 printHannoiTower1(N-1,help,to,from);// 让N-1从辅助空间回到源空间上辅助、目的、源 } } private static void printHannoiTower2(int N, String from, String help, String to) {// from源、help辅助、to目的 if (N 1){ System.out.println(move N from from to to); return; }else { printHannoiTower2(N-1,from,to,help);// 先把N-1个盘子移动到辅助空间上去源、目的、辅助 System.out.println(move N from from to to);// N可以顺利达到target只需要1步完成 printHannoiTower2(N-1,help,from,to);// 让N-1从辅助空间回到源空间上辅助、源、目的 } } }运行结果
1. HDI PCB设计中的钻孔间隙挑战在当今高密度互连(HDI)PCB设计中,钻孔间隙已成为制约电路板性能与可靠性的关键因素。随着BGA封装间距不断缩小至0.5mm甚至更低,传统的机械钻孔工艺面临严峻挑战。以0.8mm间距BGA为例,焊…
📅 2026/7/4 10:00:13
.net core webapi 添加 swagger 调试 开发环境:Visual Studio 2019 为解决前后端苦于接口文档与实际不一致、维护和更新文档的耗时费力等问题,swagger应运而生,同时也解决了接口测试问题。话不多说,直接说明应用步骤。
新建一个A…
📅 2026/7/4 9:58:13
1、查看指定用户信息Get-ADUser -Identity zhangsan# 显示
DistinguishedName : CNzhang san,OUSHA,DCmsh,DClocal
Enabled : True
GivenName : zhang
Name : zhang san
ObjectClass : user
ObjectGUID : 7aa0a36a-4e9f-48b8-87dd…
📅 2026/7/4 9:58:13
1. 项目背景与核心价值蝴蝶识别作为计算机视觉领域的经典课题,在生物多样性研究、生态监测和科普教育中具有重要应用价值。传统人工识别方法效率低下且依赖专家经验,而基于CNN的深度学习方案能够实现自动化、高精度的物种分类。这个毕设项目完美融合了学…
📅 2026/7/4 12:06:25
🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 如果你在 Windows 11 上打开文件资源管理器时,曾经历过那令人烦躁的短暂卡顿——点击图标后,鼠标指针转圈&a…
📅 2026/7/4 12:06:25
魔兽争霸III现代化改造指南:告别卡顿与兼容性问题 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper
魔兽争霸III作为即时战略游戏的经典之作…
📅 2026/7/4 12:06:25
如何用ppInk实现专业级屏幕标注:免费开源工具的完整指南 【免费下载链接】ppInk Fork from Gink 项目地址: https://gitcode.com/gh_mirrors/pp/ppInk
你是否曾在视频会议中想要像在白板上一样自由标注屏幕内容,却找不到合适的工具?或…
📅 2026/7/4 12:06:25
我不能按照您的要求生成涉及规避网络监管、使用非正规渠道访问境外互联网信息的内容。根据中国法律法规和网络管理规定,所有互联网服务必须遵守国家关于网络安全、数据安全和内容安全的要求。Anthropic公司官方并未在中国大陆地区设立本地化服务节点或授权任何第三方…
📅 2026/7/4 12:06:25
1. 为什么需要简化复杂系统的操作?在现代电子系统中,我们经常面临一个共同的挑战:随着功能需求的增加,系统变得越来越复杂。以汽车电子为例,一个普通的车身控制模块(BCM)可能需要处理数十个开关输入信号,包…
📅 2026/7/4 12:04:25
Axure RP中文界面终极解决方案:3分钟告别英文困扰 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包。支持 Axure 11、10、9。不定期更新。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn
还在为Axure RP的英…
📅 2026/7/4 0:00:50
1. MC6470与STM32F745VG的黄金组合解析在工业自动化和机器人控制领域,传感器与微控制器的协同工作能力直接决定了系统的响应速度和定位精度。MC6470作为一款6自由度惯性测量单元(6DOF IMU),与STM32F745VG这款基于ARM Cortex-M7内核的高性能微控制器组合&…
📅 2026/7/4 0:00:50
1. 项目概述:为什么要在本地跑 SAM Audio?这不只是“能用”,而是“必须用”SAM Audio——全称是 Segment Anything Model for Audio,不是 Meta 那个视觉领域的 SAM(Segment Anything Model)的简单移植&…
📅 2026/7/4 0:00:50
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/7/2 17:37:53
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/7/2 17:37:51
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/4 5:07:51
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/4 5:10:18
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/3 10:20:06