首页 > 编程 > Python > 正文

python:递归函数之汉诺塔

2019-11-09 20:09:42
字体:
来源:转载
供稿:网友

汉诺塔 (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)move(4, 'A', 'B', 'C')


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表