加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-17 07:19:42 所属栏目:Python 来源:网络整理
导读:本篇章节讲解Python递归实现汉诺塔算法。供大家参考研究具体如下: 最近面试题,面试官让我5分钟实现汉诺塔算法(已然忘记汉诺塔是啥)。 痛定思痛,回来查了一下汉诺塔的题目和算法。题干与实现如下: A基座有64个盘子,大在下小在上,每次移动一

本篇章节讲解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,c,b)
      b.append(lishan[n-1])
      a.remove(lishan[n-1])
      Solution.hanoi(self,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程序设计有所帮助。

您可能感兴趣的文章:

  • 使用python实现递归版汉诺塔示例(汉诺塔递归算法)
  • python实现汉诺塔递归算法经典案例
  • python益智游戏计算汉诺塔问题示例
  • python实现汉诺塔方法汇总
  • python二分查找算法的递归实现方法
  • python装饰器与递归算法详解
  • Python基于递归算法实现的走迷宫问题

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读