汉诺塔问题
问题概述与规则
假设有三根柱子要求,将A柱子上的所有盘子移动到B柱子上;
n个盘子标记为1, 2, 3, .... n ;
三个柱子标记为 A、B、C ;
初始状态所有的盘子都在A柱子上 ;
*移动磁盘条件
1. 一次只能移动一个磁盘
2. 不能在较小的磁盘上放置较大的磁盘
*理论主题
1. 递归函数和堆栈
2. 递归关系
图示
问题拆解(n为盘子个数)
*n = 1: 直接将盘子从A(起始柱子) 移到B(目标柱子)
*n > 1: 将问题从宏观考虑
1. 借助柱子B将n-1个盘子从A柱子移动到C柱子
2. 此时A柱子上只有一个盘子直接移动到B(目标柱子)
3. 借助柱子A将n-1个盘子从C柱子移动到B柱子
Java代码实现
疑惑点:
-
一定要确定好哪个是起始柱子哪个是目标柱子;
-
Java中的值传递
参考:
学而不思则罔,思而不学则殆!
分类:
数据结构+算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具