`
wx1569484809
  • 浏览: 63775 次
文章分类
社区版块
存档分类
最新评论

python递归实现汉诺塔游戏

 
阅读更多

汉诺塔游戏比较适合用递归的思想去理解。分享自己写的代码

# """
# 汉诺塔游戏  递归算法
# 有三个台子,s为始,e为终,t为中间过渡
# """

class Hannota():
    def __init__(self, src, des, tmp):
        '''
        name three plats
        all string type
        '''
        self.src = src
        self.des = des
        self.tmp = tmp
        self.i = 0
        
    def operation(self, num):
        '''
        opeartion of moving blocks
        num: psitive integer
        '''
        return self._operation(num, self.src, self.des, self.tmp)
    
    def count(self,num):
        '''
        count times of move bloks
        num: psitive integer
        '''
        return 2**num - 1
    
    def _operation(self, num, src, des, tmp):
        if num<=0:
            return None
        
        if num==1:
            self.i += 1
            print("第 ",self.i,"步: 把 "+src+" 顶上的块挪到  "+des+" 上面去")
            return
        
        if num==2:
            self._operation(1, src, tmp, des)
            self._operation(1, src, des, tmp)
            self._operation(1, tmp, des, src)
            
        if num>2:
            self._operation(num-1, src, tmp, des)
            self._operation(1, src, des, tmp)
            self._operation(num-1, tmp, des, src)

aa = Hannota("s", "e", "t")
aa.operation(5)

下面是实现效果

第  1 步: 把 s 顶上的块挪到  e 上面去
第  2 步: 把 s 顶上的块挪到  t 上面去
第  3 步: 把 e 顶上的块挪到  t 上面去
第  4 步: 把 s 顶上的块挪到  e 上面去
第  5 步: 把 t 顶上的块挪到  s 上面去
第  6 步: 把 t 顶上的块挪到  e 上面去
第  7 步: 把 s 顶上的块挪到  e 上面去
第  8 步: 把 s 顶上的块挪到  t 上面去
第  9 步: 把 e 顶上的块挪到  t 上面去
第  10 步: 把 e 顶上的块挪到  s 上面去
第  11 步: 把 t 顶上的块挪到  s 上面去
第  12 步: 把 e 顶上的块挪到  t 上面去
第  13 步: 把 s 顶上的块挪到  e 上面去
第  14 步: 把 s 顶上的块挪到  t 上面去
第  15 步: 把 e 顶上的块挪到  t 上面去
第  16 步: 把 s 顶上的块挪到  e 上面去
第  17 步: 把 t 顶上的块挪到  s 上面去
第  18 步: 把 t 顶上的块挪到  e 上面去
第  19 步: 把 s 顶上的块挪到  e 上面去
第  20 步: 把 t 顶上的块挪到  s 上面去
第  21 步: 把 e 顶上的块挪到  t 上面去
第  22 步: 把 e 顶上的块挪到  s 上面去
第  23 步: 把 t 顶上的块挪到  s 上面去
第  24 步: 把 t 顶上的块挪到  e 上面去
第  25 步: 把 s 顶上的块挪到  e 上面去
第  26 步: 把 s 顶上的块挪到  t 上面去
第  27 步: 把 e 顶上的块挪到  t 上面去
第  28 步: 把 s 顶上的块挪到  e 上面去
第  29 步: 把 t 顶上的块挪到  s 上面去
第  30 步: 把 t 顶上的块挪到  e 上面去
第  31 步: 把 s 顶上的块挪到  e 上面去

 

转载于:https://my.oschina.net/u/3464640/blog/1492417

分享到:
评论

相关推荐

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

    本文实例讲述了Python递归实现汉诺塔算法。分享给大家供大家参考,具体如下: 最近面试题,面试官让我5分钟实现汉诺塔算法(已然忘记汉诺塔是啥)。 痛定思痛,回来查了一下汉诺塔的题目和算法。题干与实现如下: A...

    python上的汉诺塔实现

    ### Python上的汉诺塔实现 #### 知识点概述 汉诺塔问题是一个经典的递归问题,它在计算机科学和编程领域中被广泛用来演示递归算法的工作原理。本篇文章将详细探讨汉诺塔问题的基本概念、递归解法以及如何在Python...

    汉诺塔游戏 Python源代码

    汉诺塔是传统的智力游戏,与华容道、魔方等类似。这是汉诺塔游戏的Python源代码,使用了基本的递归方式实现汉诺塔求解问题。 欢迎大家下载。

    python下实现汉诺塔

    汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。...这里用python3递归法解决汉诺塔问题

    递归实现汉诺塔

    以下是用伪代码表示的递归汉诺塔解决方案: ```markdown function hanoi(n, A, B, C): if n &gt; 0: // 第一步:将A上的n-1个盘子移动到B hanoi(n-1, A, C, B) // 第二步:将A上的最大盘子移动到C move(A, C) ...

    python实现汉诺塔

    在Python中实现汉诺塔可以很好地展示递归算法的应用。本文将深入探讨如何使用Python来解决汉诺塔问题,以及涉及到的相关编程知识。 首先,我们要理解汉诺塔的基本规则: 1. 每个盘子都有一个大小,从1到N,最大的在...

    最简单的python代码实现汉诺塔

    在Python中实现汉诺塔问题通常采用递归的方法。下面我们将详细介绍这段代码的含义及其工作原理: ```python def hanoi(n, source, target, auxiliary): if n &gt; 0: # 将 n-1 个盘子从源柱移动到辅助柱 hanoi(n-1,...

    汉诺塔PYTHON

    python 递归 汉诺塔算法python实现python 递归 汉诺塔算法python实现

    用Python编写的汉诺塔游戏

    下面我们将详细讨论如何用Python实现汉诺塔游戏。 首先,我们需要理解算法的核心——递归。汉诺塔问题的解决方案可以用递归函数来表示。假设我们有n个盘子,我们可以将问题分解为三个步骤: 1. 将n-1个盘子从初始...

    基于python实现递归案例(实现了汉诺塔游戏)

    该资源利用递归实现了汉诺塔游戏,介绍如下 (1)递归是一种编程技术,其中一个函数直接或间接地调用自身。在解决复杂问题时,递归能够将问题划分为更小、更易管理的子问题。递归的执行依赖于明确的终止条件和递推...

    汉诺塔_汉诺塔_

    Python递归实现汉诺塔的关键在于理解如何将大问题分解为小的相同子问题。 在`汉诺塔.py`文件中,可能包含以下代码: ```python def hanoi(n, A, B, C): if n &gt; 0: hanoi(n - 1, A, C, B) print(f"Move disk {n}...

    什么是汉诺塔python以及学习汉诺塔python的意义

    Python语言非常适合用来实现汉诺塔算法,因为它支持递归调用,并且语法简洁易读。下面是一个简单的Python函数实现示例: ```python def hanoi(n, source, target, auxiliary): if n &gt; 0: # 将n-1个圆盘从source...

    基于Python语法实现汉诺塔的移动过程与原理

    总之,通过Python实现汉诺塔问题,我们可以深入理解递归算法,掌握如何用Python语法优雅地表达复杂问题的解决方案,并在此过程中锻炼逻辑思维能力。同时,这也为我们提供了进一步探索计算机科学中的其他递归问题和...

    使用python实现递归版汉诺塔示例(汉诺塔递归算法)

    利用python实现的汉诺塔。带有图形演示 复制代码 代码如下:from time import sleep def disp_sym(num, sym): print(sym*num, end=”) #recusiondef hanoi(a, b, c, n, tray_num): if n == 1: move_tray(a, c) ...

    汉诺塔-汉诺塔的非递归实现源码和原理讲解

    总之,非递归汉诺塔问题的解决方法利用了栈的数据结构,通过迭代实现盘子的有序移动,从而避免了递归可能导致的堆栈溢出问题,尤其适用于处理大规模问题。理解和实现这个算法有助于深化对数据结构和算法的理解,以及...

    下面是一个使用 Python 编写的汉诺塔游戏示例.zip

    总的来说,Python实现的汉诺塔游戏结合了递归算法和基本的图形用户界面设计,是学习这两个领域的好例子。通过分析和理解这个代码,你可以深入理解递归工作原理,以及如何利用Python创建简单的交互式应用。同时,这个...

    python实现汉诺塔--递归(csdn)————程序.pdf

    汉诺塔是一个经典的递归问题,它源自印度的一个古老传说,涉及将一组圆盘从一根柱子移动到另一根柱子,遵循特定的规则。在这个问题中,有三根柱子,标记为 A、B 和 C,以及 n 个大小不一的圆盘,每个圆盘都标有不同...

Global site tag (gtag.js) - Google Analytics