python:递归函数之汉诺塔
2017-02-09 11:00
211 查看
汉诺塔 (http://baike.baidu.com/view/191666.htm) 的移动也可以看做是递归函数。
对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为:
如果a只有一个圆盘,可以直接移动到c;
如果a有n个圆盘,可以看成a有1个底盘 + (n-1)个圆盘,首先需要把 (n-1) 个圆盘移动到 b,然后,将 a的最后一个圆盘移动到c,再将b的(n-1)个圆盘移动到c。
第一步:将 n-1 个盘子从 a 经过 c 搬运到 b,即move(n-1, a, c, b)
第二步:将 第 n 个盘子 从 a 移到 c,即 print a, '-->', c
第三步:将 n-1个盘子从 b 经过 a 搬运到 c,即move(n-1, b, a, c)
if n==1:
print a,'-->',c
return
move(n-1, a, c, b)
print a,'-->',c
move(n-1, b, a, c)
<
4000
br />
move(4, 'A', 'B', 'C')
题目描述:
对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为:如果a只有一个圆盘,可以直接移动到c;
如果a有n个圆盘,可以看成a有1个底盘 + (n-1)个圆盘,首先需要把 (n-1) 个圆盘移动到 b,然后,将 a的最后一个圆盘移动到c,再将b的(n-1)个圆盘移动到c。
解题思路:
完成 n 个盘子从 a 经过 b 到 c 的搬运只需要3步第一步:将 n-1 个盘子从 a 经过 c 搬运到 b,即move(n-1, a, c, b)
第二步:将 第 n 个盘子 从 a 移到 c,即 print a, '-->', c
第三步:将 n-1个盘子从 b 经过 a 搬运到 c,即move(n-1, b, a, c)
代码实现(Python):
def move(n, a, b, c):if n==1:
print a,'-->',c
return
move(n-1, a, c, b)
print a,'-->',c
move(n-1, b, a, c)
<
4000
br />
move(4, 'A', 'B', 'C')
相关文章推荐
- Python实现递归函数:汉诺塔
- Python笔记-递归函数、汉诺塔
- 【Python】用递归函数简单实现汉诺塔的移动
- Python之汉诺塔移动(递归函数使用)
- Python利用递归函数移动汉诺塔
- python-递归函数.汉诺塔.
- 使用python实现递归版汉诺塔示例(汉诺塔递归算法)
- python实现斐波那契递归函数的方法
- Python初学笔记:递归解决汉诺塔问题
- 第12周项目3-用递归函数求解--汉诺塔问题
- python实现算法题-汉诺塔
- 递归函数 分类: python基础学习 python 小练习 2013-12-12 17:51 278人阅读 评论(0) 收藏
- 第十二周项目二 汉诺塔递归函数
- python GO 汉诺塔
- python 递归函数
- Python写的汉诺塔问题
- python解决汉诺塔问题
- 汉诺塔问题的python实现
- python益智游戏计算汉诺塔问题示例
- python_汉诺塔