汉罗塔问题 (递归分治篇)------- 算法笔记016

本文深入解读汉罗塔问题,揭示其递归与分治的本质。通过逐步解析三个圆盘的汉罗塔实例,阐述如何利用递归策略将圆盘从一柱移动至另一柱,借助中介柱完成移动过程。通过不断递归,最终解决所有圆盘的转移问题。
摘要由CSDN通过智能技术生成

概念解读

在这里插入图片描述

其实汉罗塔问题的实质就是利用眼前的这三根柱子,一次只能移动一个圆盘,其中一根作为中介柱,使一根柱子上的圆盘移到另一根上。在移动的过程中不能出现大的圆盘套在小的圆盘的上面。
其实这个问题体现了递归的思想,上面的三种情况列举出来以体现问题的递归性。

上面图片的解释并不完备!
以三个汉罗塔举例:我们要将a柱上的汉罗塔全部移到c上,b柱为中转柱

第一步:我们要设法将a柱上前两个移到b上,再将a柱上最后一个移到c上
第二步:如何将a柱上的前两个移到b上?就是将第一个移到c上将第二个移到b上
第三步: 现在思考如何将c柱上的移到b上?很显然就是一个我们直接一上去。这样就完成了我们第一步的前两个移到b上的步骤。再将a柱上最后一个移到c上。
递归步:现在思考的就是如何将b上的两个,或者是N-1个移到c上的操作。继续重复的操作

以此思想我们可以设计递归算法算法:

void Hanoi(int n,
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

智者_若愚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值