汉罗塔问题

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层移回正确位置,这个数据规模一直在减少,每个子递归都完成一个流程设计
}
posted @   牵我狗  阅读(85)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· 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工具
点击右上角即可分享
微信分享提示