递归
经过一次递归后,问题还是原问题,但是规模变小了;
初始状态是A柱上有n个盘子,B、C两个柱子空。要想将盘子移到C柱上,首先要把第n个盘子移到C柱上,而要移动第n个盘子就要先把前n-1个盘子移动到B柱上。所以
第一步:将前n-1个盘子移动到B柱上(先不用管怎么移动),将第n个盘子移动到C柱上。
移动后的状态是A柱空,B柱上有n-1个盘子,C柱空(因为第n个盘子最大,其他所有盘子都可以放,所以C柱上相当于空。)
第二步:将B柱上的n-2个盘子移动到A柱上(先不用管怎么移动),将第n-1个盘子移动到C柱上。
移动后的状态和初始状态相同只是规模小了一点(前两步就已经实现了一次递归)
第三步:利用递归直至n=1.
当要把最大盘子上面的所有盘子移动到另一个空柱上时,不要关心具体如何移动,只用把它看做一个函数可以完成即可,不用关心函数的具体实现。如果你的思路纠结在这里,就很难继续深入了。
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· Sdcb Chats 技术博客:数据库 ID 选型的曲折之路 - 从 Guid 到自增 ID,再到
· .NET Core GC压缩(compact_phase)底层原理浅谈
· Winform-耗时操作导致界面渲染滞后
· Phi小模型开发教程:C#使用本地模型Phi视觉模型分析图像,实现图片分类、搜索等功能
· 语音处理 开源项目 EchoSharp