汉诺塔问题是一个经典的问题。汉诺塔(Hanoi Tower),又称河内塔,源于印度一个古老传说。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘。问应该如何操作?

使用python递归函数可以实现

move.py

def move(n, a, b, c):

if n == 1:

print(a, '-->', c)

else:

move(n-1, a, c, b) #把n-1个盘子从 a 移动到 b

move(1, a, b ,c)#把1个盘子从 a 移动到 c

move(n-1, b, a, c)#把n-1个盘子从 b 移动到 c

#一直循环到n==1

move(3, 'A', 'B', 'C')

实现过程,如果只有一个盘则只需要把盘从a移动到c即可,如果有多个呢

第一步:把n-1个盘从a通过c移动到b

第二步:把a最底部的最大的盘从a移动到c

第三步:把已经移动到b的n-1个盘移动到c 完成整个移动过程

下面以n=2为例演示移动过程

n=3时流程图

python汉诺塔递归并统计次数_Python之汉诺塔递归运算相关推荐

  1. python numpy指定列最大值,统计次数

    numpy获取指定列最大值,最大值索引,统计次数 import numpy as npdata=np.array([[1,2],[2,1],[3,4],[1,4]])bb= np.max(data[: ...

  2. 在python中用递归的方法编程_python基础之函数,递归,内置函数

    阅读目录 一 数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量, ...

  3. python中文词组统计次数_python统计中文词组出现次数

    2018年9月7日在百度google没有找到python统计中文词组的,查出来的都是统计英文单词,词组的,所以我想来实现python中文词组统计分享. 首先我是用textrank4zh库将句子转化成词 ...

  4. python excel处理重复行并统计个数_python统计一个文本中重复行数的方法

    python统计一个文本中重复行数的方法 这篇文章主要介绍了python统计一个文本中重复行数的方法,涉及针对Python中dict对象的使用及相关本文的操作,具有一定的借鉴价值,需要的朋友可以参考下 ...

  5. python递归实现二分查找_python二分查找算法的递归实现

    本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...

  6. python递归实现二分查找_python二分查找算法的递归实现方法

    本文实例讲述了python二分查找算法的递归实现方法.分享给大家供大家参考,具体如下: 这里先提供一段二分查找的代码: def binarySearch(alist, item): first = 0 ...

  7. pythonget函数统计次数_python | 统计频次

    自定义函数计算每个类型出现的次数 统计词频 方案一def get_counts(sequence): counts = {} for x in sequence: if x in counts: co ...

  8. 要理解递归,得先理解递归--用Java语言由浅入深讲解汉诺塔游戏

    2019独角兽企业重金招聘Python工程师标准>>> 一.递归是什么? 定义:程序调用自身的编程技巧称为递归.它分为调用阶段和回退阶段,递归的回退顺序是它调用顺序的逆序. 递归使用 ...

  9. 用java编写汉诺塔问题_数据结构与算法之汉诺塔问题(Java递归)

    汉诺塔问题: 有三根柱子,源杆A,暂存杆temp,目的杆C A上有n层盘子,由小到大向下排列,现需要将A杆的盘子移到C杆中 要求:1)大的盘在下面,小的盘在上面 2)一次只能移动一个盘子 个人思路:先 ...

最新文章

  1. Dump File Bat
  2. java itext word操作_使用JAVA中的Apache POI和iText从Word(DOC)创建PDF
  3. 飞思卡尔智能车iar工程常见问题
  4. 大厅安排(normal)
  5. springMvc源码刨析笔记
  6. 浅谈装饰模式应用于IO中
  7. 计算机在职考研一月联考院校,在职研究生一月联考的分数线是多少?
  8. ASP.NET WebAPi之断点续传下载(上)
  9. Python 实现邮件发送功能(进阶)
  10. java求职面试_Java面试求职
  11. python建立虚拟环境付款_python 创建虚拟环境(virtualenv)
  12. Leetcode-探索 | 买股票的最佳时机II
  13. matplotlib的一些代码
  14. IDEA SpringBoot多模块项目搭建详细过程(转)
  15. 怎么做 空间杜宾模型_利用STATA创建空间权重矩阵及空间杜宾模型计算命令
  16. 【Y9000x】单硬盘UEFI+GPT基于Win10安装Ubuntu18.04
  17. i40e驱动安装方法
  18. lattice diamond 安装及获取license方法
  19. xp下的资源管理器界面上的前进后退等图标保持在系统哪里?shell32.dll里没有。
  20. hive执行出现问题:Ended Job = job_1667594872527_3123 with errors Error during job, obtaining debugging info

热门文章

  1. crystalreport 水晶报表设置首页不显示页码
  2. iOS -- block one
  3. 【转】应届毕业生要知道的几个小东西,,三方协议,,报到证,,干部身份
  4. java中set的初始化_关于Java Set的初始化方法
  5. 巧用这几款多特瑞产品,感受别样冬日暖
  6. linux系统如何完全删除用户
  7. 线性筛——莫比乌斯函数
  8. Java内存模型MESI协议
  9. Hive表结构操作(增加列,删除列,修改列,移动列)
  10. (四)C语言中的字符类型