Python递归实现汉诺塔算法示例

 更新时间:2018年03月19日 09:15:16   作者:kuqs(奇小东)  
这篇文章主要介绍了Python递归实现汉诺塔算法,结合实例形式分析了汉诺塔算法的原理、实现步骤与相关操作技巧,需要的朋友可以参考下

本文实例讲述了Python递归实现汉诺塔算法。分享给大家供大家参考,具体如下:

最近面试题,面试官让我5分钟实现汉诺塔算法(已然忘记汉诺塔是啥)。

痛定思痛,回来查了一下汉诺塔的题目和算法。题干与实现如下:

A基座有64个盘子,大在下小在上,每次移动一个盘子,每次都需要大在下小在上,全部移动到B基座,C基座为辅助基座。

# -*- coding:utf-8 -*-
# 汉诺塔回溯递归实现
# 假设参数中初始杆为a,借助杆为c,阶段终止杆为b
# 第一步,a状态借助b移动到c
# 第二步,a移动到b
# 第三步,c借助a移动到b
class Solution:
  def hanoi(self, n, a, b, c):
    global lishan
    if n > 0:
      Solution.hanoi(self, n-1, a, c, b)
      b.append(lishan[n-1])
      a.remove(lishan[n-1])
      Solution.hanoi(self, n-1, c, b, a)
so = Solution()
n = 3
global lishan
lishan = [x for x in xrange(n)]
A = [x for x in xrange(n)]
B = []
C = []
so.hanoi(3, A, B, C)print B

运行结果:

[2, 1, 0]

回溯递归,设计起来还是很有难度的(在没有背过这个题目的前提下)

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • Pygame 精准检测图像碰撞的问题

    Pygame 精准检测图像碰撞的问题

    这篇文章主要介绍了Pygame 精准检测图像碰撞,在用Pygame写游戏的时候,有人可能会遇到两个Rect对象碰撞但是对象之间还有空间间隔的问题,这里,将教大家用一种方法精准地检测图像碰撞,需要的朋友可以参考下
    2022-06-06
  • 解析目标检测之IoU

    解析目标检测之IoU

    Intersection over Union(IoU)是一种测量在特定数据集中检测相应物体准确度的一个标准。IoU是一个简单的测量标准,只要是在输出中得出一个预测范围(bounding boxes)的任务都可以用IoU来进行测量
    2021-06-06
  • 手把手教你实现Python重试超时装饰器

    手把手教你实现Python重试超时装饰器

    这篇文章主要为大家介绍了实现Python重试超时装饰器教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2023-05-05
  • 分析Python编程时利用wxPython来支持多线程的方法

    分析Python编程时利用wxPython来支持多线程的方法

    这篇文章主要介绍了Python编程时利用wxPython来支持多线程的方法,本文主要以开发GUI程序时做线程通讯作为一个示例来讲解,需要的朋友可以参考下
    2015-04-04
  • Python响应对象text属性乱码解决方案

    Python响应对象text属性乱码解决方案

    这篇文章主要介绍了Python响应对象text属性乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 通过Python中的CGI接口讲解什么是WSGI

    通过Python中的CGI接口讲解什么是WSGI

    这篇文章主要为大家通过Python中的CGI接口及应用示例讲解什么是WSGI,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-04-04
  • python读取csv文件示例(python操作csv)

    python读取csv文件示例(python操作csv)

    这篇文章主要介绍了python读取csv文件示例,这个示例简单说明了一下python操作csv的方法,需要的朋友可以参考下
    2014-03-03
  • python实现在sqlite动态创建表的方法

    python实现在sqlite动态创建表的方法

    这篇文章主要介绍了python实现在sqlite动态创建表的方法,涉及Python操作SQLite数据库创建数据表的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • python os模块常用的29种方法使用详解

    python os模块常用的29种方法使用详解

    这篇文章主要介绍了python os模块常用的29种方法使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • python pygame实现球球大作战

    python pygame实现球球大作战

    这篇文章主要为大家详细介绍了Python pygame实现球球大作战,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11

最新评论