您的位置:首页 > 编程语言 > Python开发

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 个盘子从 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')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: