首页 > 编程 > Python > 正文

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

2020-01-04 15:37:03
字体:
来源:转载
供稿:网友

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

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

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

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

# -*- coding:utf-8 -*-# 汉诺塔回溯递归实现# 假设参数中初始杆为a,借助杆为c,阶段终止杆为b# 第一步,a状态借助b移动到c# 第二步,a移动到b# 第三步,c借助a移动到bclass 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 = 3global lishanlishan = [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教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表