汉罗塔问题
class hanluota { public static void main(String[] args) { int nDisks = 2; move(nDisks, 'A', 'B', 'C'); } public static void move(int n, char from, char other, char to) { if (n == 1) { System.out.println("Disk 1 from " + from + " to " + to); return; } move(n - 1, from, to, other); // 此时to,也传送进去了,但是没有被使用,用到的变量一直是 from 和 to ,other 只是辅助空间 System.out.println("Disk " + n + " from " + from + " to " + to); move(n - 1, other, from, to); } // 我们知不知道高阶汉罗塔怎么移动,不知道,但是我们从最少的汉罗塔的移动中找到了他的规律,利用计算机的性能,运算出了它的答案 // 具体的编码中, // 1. base case , // 2. 每个子递归中需要完成的步骤,如果你不知道如何如何写出这个递归,你的思路是,先写一个例子,1层,再写一个例子,2层,最后一直写到多层 // 3. 使用多个变量,然后复用这几个变量,一般有计数器n ,然后有额外变量 ,容器other, // 4. 我们有了大流程,移动上面的n-1 层,在移动n 层,知道 n-1层移回正确位置,这个数据规模一直在减少,每个子递归都完成一个流程设计 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具