用Python递归实现汉诺塔问题
来源:互联网 发布:凯程网络课程 编辑:程序博客网 时间:2024/06/03 16:49
问题描述
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
问题分析
我曾经遇到过几次汉诺塔问题,当时觉得想明白了,再次遇到时又要从头分析,这次使用python的递归法真的非常简单,其实无论盘子有多少,抓住本质的移动规律就可以了。move(n,a,b,c)函数中对应的a表示起始位置,b表示中间位置,c表示最终要移到的位置。整个汉诺塔问题可以分为以下三步:
将n-1个盘子从a移到b
将最后1个盘子从a移到c
- 将n-1个盘子从b移到c
Python代码
#!/usr/bin/env python3# -*- coding: utf-8 -*-def move(n,a,b,c): if n==1: print(a,'-->',c) else: move(n-1,a,c,b) move(1,a,b,c) move(n-1,b,a,c)print(move(3,'A','B','C'))
0 0
- 用Python递归实现汉诺塔问题
- python用递归实现汉诺塔问题
- 递归实现汉诺塔问题(python)
- 经典递归解决汉诺塔问题 python实现
- python 递归实现 汉诺塔
- Python 递归实现汉诺塔
- Python递归实现汉诺塔
- python递归实现汉诺塔实现
- python实现汉诺塔(递归实现)
- 递归实现汉诺塔问题
- 递归实现汉诺塔问题
- 递归实现汉诺塔问题
- 递归实现汉诺塔问题
- 汉诺塔问题递归实现
- 汉诺塔问题--递归实现
- 递归实现汉诺塔问题
- 经典汉诺塔问题:分别用递归和非递归实现
- Python递归例子:汉诺塔问题
- 内容提供者——fragment
- 恶心的XML之"根级别上的数据无效。 第 1 行,位置 1"
- 信息检索导论——四、索引构建
- 大话设计模式c++实现--原型模式
- 6P的宽度375VS414
- 用Python递归实现汉诺塔问题
- 16.7.7 T1:YL杯超级篮球赛
- 修改tableview索引条背景颜色变透明或其他颜色的方法
- 卷二 MFC中简单控件使用
- Android开发学习之路--Drawable mutations
- (OK) 图解几个与Linux网络虚拟化相关的虚拟网卡-VETH/MACVLAN/MACVTAP/IPVLAN
- java基础学习总结——面向对象2
- 优先队列的应用
- chattr命令详解