Python汉诺塔算法(经典递归)

作者: 世外大帝 | 来源:发表于2017-11-17 16:56 被阅读6次
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date    : 2017-11-17 16:58:55
# @Author  : TaoYuan (1876665310@qq.com)
# @Link    : https://github.com/seeways or http://blog.csdn.net/lftaoyuan
# @Version : 1

# 第一个塔为初始塔,中间的塔为借用塔,最后一个塔为目标塔
i = 0  # 记录步数


def move(no, come, to):  # 将编号为no的盘子由come移动到to
    global i
    i += 1
    print("第", i, " 步:将 ", no, " 号盘子 \n ", come, "---->", to)


def hanoi(no, come, denpend_on, to):  # 将n个盘子由初始塔移动到目标塔(利用借用塔)
    if no == 1:
        move(1, come, to)  # 只有一个盘子是直接将初塔上的盘子移动到目的地
    else:
        hanoi(no - 1, come, to, denpend_on)  # 先将初始塔的前n - 1个盘子借助目的塔移动到借用塔上
        move(no, come, to)  # 将剩下的一个盘子移动到目的塔上
        hanoi(no - 1, denpend_on, come, to)  # 最后将借用塔上的n - 1个盘子移动到目的塔上


if __name__ == '__main__':
    print("请输入盘子的个数:\n")
    no = input()
    print(no)
    x = 'A'
    y = 'B'
    z = 'C'
    print("盘子移动情况如下:\n")
    hanoi(int(no), x, y, z)

相关文章

  • 汉诺塔递归

    学习汉诺塔递归算法

  • Python汉诺塔算法(经典递归)

  • 算法学习

    算法学习 递归 调用自身终止条件 汉诺塔问题 python实现: def hanoi(n, a, b, c):if...

  • Python汉诺塔递归算法

    汉诺塔含义: 汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石...

  • 汉诺塔问题的求解与分析

    一、递归算法介绍 这篇文章讲的是一个古老而又经典的汉诺塔问题,他是递归算法的一个很好的应用实例。有关递归函数的介绍...

  • 数据结构与算法-递归分治-汉诺塔思想

    折半查找算法的递归实现 思想:减少查找序列的长度,分而治之地进行关键字的查找 汉诺塔问题 汉诺塔是我们递归思想,分...

  • Go-汉诺塔递归算法

    汉诺塔递归算法 算法实现 测试代码 结果 A -> BA -> CB -> CA -> BC -> AC -> B...

  • Python实现汉诺塔递归算法

    汉诺塔算法 要想利用递归函数解决问题,一定要完成两个基本的要素:递归的终止条件,递推公式。为了分析得到递归函数,下...

  • 汉诺塔的图解递归算法

    原文链接(转载请注明出处)汉诺塔的图解递归算法 起源 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大...

  • 经典递归--汉诺塔

    算法:当只有一个盘子的时候,只需要从将A塔上的一个盘子移到C塔上。 当A塔上有两个盘子是,先将A塔上的1号盘子(编...

网友评论

    本文标题:Python汉诺塔算法(经典递归)

    本文链接:https://www.haomeiwen.com/subject/xqijvxtx.html