趣味编程(二)python汉诺塔学习递归

山不厌高,水不厌深。每天跟着公众号学习一点python小知识,仅仅占用几分钟时间。那么一个月,一年,两年......你就成为python大牛啦趣味编程(二)python汉诺塔学习递归

给大家出一道题,学过递归的朋友肯定都遇到过:

法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金片,这就是所谓的汉诺塔。不论白天黑夜,总有一个僧侣在按照下面的法则移动这些金片:一次只移动一片,不管在哪根针上,小片必须在大片上面。僧侣们预言,当所有的金片都从梵天穿好的那根针上移到另外一根针上时,世界就将在一声霹雳中消灭,而梵塔、庙宇和众生也都将同归于尽。

趣味编程(二)python汉诺塔学习递归

这个图是我自己画的趣味编程(二)python汉诺塔学习递归趣味编程(二)python汉诺塔学习递归,不太好看,大家包涵。本来百度上有很多汉诺塔图片,但我被“视觉中国”吓破胆了,不敢乱用素材。

其中有A,B,C。三个针(有点粗趣味编程(二)python汉诺塔学习递归)。我们要做的是把A所有的盘子移动到C。从小到大将盘子分为1,2,3......64。最小的盘子是1号,最大的盘子是64号。我们可以这么想,每一步里面有三个小步骤:

第一步,(1)将1到63号盘子移动到B上,(2)将1号盘子移动到C上,(3)然后将B针里面的1到63号盘子移动到C上。

这就完成了,趣味编程(二)python汉诺塔学习递归

当然是不可能的,我们发现第(2)和(3)都好解决,但是第一步就不好解决了。

那么,我们将B针看做A'(第一步里面的A);C针看做B'(第一步里面的B);将A针看做C';再完成类似第一步的操作.....

最后,汉诺塔的代码就完成了。

思路就是以上的思路,代码的答案我们下一章“趣味编程”公布,尽情期待。下一章也就是《趣味编程(三)》

扫描二维码关注公众号

趣味编程(二)python汉诺塔学习递归

图片与资源来源网站:

1 https://pixabay.com/zh/

2 https://www.pexels.com

3 https://picjumbo.com

4 https://fancycrave.com

5 https://www.foodiesfeed.com

6 https://www.pakutaso.com

7 https://isorepublic.com

8:python趣味编程100题。

参考来源:搜狗百科