Hanoi塔

“递归算法离不开递推方程的求解。”

这里Hanoi塔有三个柱子,A\B\C。上面放着五个盘子,要将A柱的盘子全部移到C柱上:

其中规则:

1.圆盘必须在圆盘上面。

2.一次只能移动一个圆盘。

3.可以任选三个柱子移动圆盘。

思想方法:

1.若只有一个盘子则直接将A柱的盘子移动到C柱上。

2.若盘子数目大于1,则将n-1个盘子从A柱移动到B柱。

3.利用一次移动将最下面的大盘子从A柱移动到C柱。

4.将B柱上的n-1个盘子按照规则移动到C柱。

算法:

Hanoi( i ,A ,B ,C )

if i = 1 then move(i,A,C)
else Hanoi(i - 1,A,C,B)
move(i,A,C)
Hanoi(i - 1,B,A,C) 

复杂性:

算法总的行动次数为T(n),行2与行4有两次递归调用,每次调用的输入实例规模是n-1,行动次数为T(n-1),行3有一次移动,递推方程如下:

T(n)=2T(n-1)+1

方程初值是T(1)=1。

基础算法:Hanoi塔(递归)相关推荐

  1. 关于Hanoi塔的实现

    关于Hanoi塔的实现 首先,在此之前,我们需要了解一下递归这个东西: 在我看来,递归这个东西就是栈的进出: 向下:进栈 回溯:出栈 在进栈之前标记状态,输入到栈中: #include<bits ...

  2. 基础算法 —— 递归/递推 —— 汉诺塔问题(Hanoi)

    [问题提出] Hanoi塔由n个大小不同的圆盘和三根木柱a,b,c组成.开始时,这n个圆盘由大到小依次套在a柱上,如图所示. 要求把a柱上n个圆盘按下述规则移到c柱上:  (1)一次只能移一个圆盘:  ...

  3. 基础算法整理(1)——递归与递推

    程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一 ...

  4. 先来先服务算法代码_程序员算法与数据结构基础中的基础,栈与递归

    在此之前,我们介绍了动态规划.深度优先搜索等基础算法,但是,有部分好友评论说,难度太难了,我们知道动态规划的自顶向下跟深度优先搜索一般都用递归实现,今天我们就先来讲讲算法与数据结构中,基础中的基础递归 ...

  5. ssm插入数据时候栈溢出_程序员算法与数据结构基础中的基础,栈与递归

    在此之前,我们介绍了动态规划.深度优先搜索等基础算法,但是,有部分好友评论说,难度太难了,我们知道动态规划的自顶向下跟深度优先搜索一般都用递归实现,今天我们就先来讲讲算法与数据结构中,基础中的基础递归 ...

  6. 递归_三要素_基础算法必备

    递归_三要素_基础算法必备 目录 第一要素:明确函数作用 第二要素:递归结束条件 第三要素:函数等价关系 第一要素:明确函数作用 对于递归,我觉得很重要的一个事就是,这个函数的功能是什么,他要完成什么 ...

  7. 【YBT高效进阶】1基础算法/1逆推算法/2奇怪汉诺塔

    [YBT高效进阶]1基础算法/1逆推算法/2奇怪汉诺塔 内存限制:256 MiB 时间限制:1000 ms 标准输入输出 题目类型:传统 评测方式:文本比较 题目描述 汉诺塔问题,条件如下: 这里有 ...

  8. C++ Hanoi塔学习笔记(递归与非递归实现)

    自己学习理解的笔记,欢迎补充. 1.Hanoi塔问题的递归解法 void Hanoi(int n, char a, char b, char c) {if (n == 1) {cout << ...

  9. 递归---Hanoi塔问题

    http://shmilyaw-hotmail-com.iteye.com/blog/2077098 简介 关于Hanoi塔问题的分析,在网上的文章都写烂了.之所以打算写这篇文章,更多的是针对这个问题 ...

最新文章

  1. Android程序label居中
  2. Qt Creator 插件开发(1):编译 Qt Creator
  3. 软件项目开发流程及配置人员
  4. 分享cropper剪切单张图片demo
  5. python猴子补丁是什么_什么是Python的monkeypatch(猴子补丁)?
  6. HDU 6750 Function(莫比乌斯反演)(2020百度之星初赛1)
  7. 统计学中p值计算公式_不得不学的统计学基础知识(二)
  8. 实锤了?哪吒涉嫌抄袭起诉已立案:公布多张相似对比图
  9. COMSOL 固体力学 第一主应力、第二主应力、第三主应力、径向应力、环向应力、切向应力 截面一维曲线
  10. 数据分析-人群画像和目标群体分析
  11. 淘宝运营 高客单价的特点、推广引流方式
  12. 【小程序】微信小程序自定义导航栏及其封装
  13. iOS开发人员必看的精品资料(100个)(转)
  14. 递归中的引用传递和常引用传递
  15. 阿里云开放平台微前端方案的沙箱实现
  16. qq电脑管家抽奖页面源代码
  17. scanf_s()函数的用法
  18. ffmpeg 各版本下载以及在线安装
  19. final修饰的变量必须初始化吗?
  20. Informatica 中文字符

热门文章

  1. python gui是什么_python的gui是什么
  2. FastICA算法类有哪些最新发表的毕业论文呢?
  3. 成君忆 易中天 三国专家网上博斗
  4. teamviewer 黑屏 linux,Teamviewer 在 Linux 下无法启动?
  5. 三步解决Word无法使用Ctrl V进行复制
  6. 2022年新年焰火代码
  7. 有趣的二进制算法小魔术
  8. 计算机网络实验-eNSP路由器配置
  9. SolidWorks装配体及约束快速导入Adams
  10. hbuildx编辑器在文件编译上的bug