python-汉诺塔

汉诺塔 (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,打印出移动的步骤:
move(n, a, b, c)
例如,输入 move(2, 'A', 'B', 'C'),打印出:
A --> B
A --> C
B --> C

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')
image.png

真的啊,要想将64片全部移过去,还真得等到世界毁灭的那一刻。。。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 汉诺塔 (https://en.wikipedia.org/wiki/Tower_of_Hanoi) 的移动也可以...
    oliverhuang阅读 550评论 0 1
  • 昨天看廖雪峰的Python教程,看到了递归函数,具体的递归函数看他讲的就可以,最好自己好好研究一下递归函数是干啥的...
    oh_flying阅读 2,297评论 2 2
  • 专业考题类型管理运行工作负责人一般作业考题内容选项A选项B选项C选项D选项E选项F正确答案 变电单选GYSZ本规程...
    小白兔去钓鱼阅读 10,982评论 0 13
  • 汉诺塔的实现,是一个典型的递归问题,当然越是复杂的递归问题越是考验人的抽象思维; 哈哈哈,言归正传,汉诺塔问题如下...
    跟我去北方吧阅读 456评论 0 1
  • 如果你可以心平气和的面对曾经失去与经历的苦难,甚至心怀感激所遭受的一切,那么你一定是破茧成蝶了,并获得了更强大的精...
    梦生何欢阅读 470评论 1 5

友情链接更多精彩内容