山不厌高,水不厌深。每天跟着公众号学习一点python小知识,仅仅占用几分钟时间。那么一个月,一年,两年......你就成为python大牛啦

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

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

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

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

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

这就完成了,。

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

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

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

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

扫描二维码关注公众号

图片与资源来源网站:

1 https://pixabay/zh/

2 https://www.pexels

3 https://picjumbo

4 https://fancycrave

5 https://www.foodiesfeed

6 https://www.pakutaso

7 https://isorepublic

8:python趣味编程100题。

参考来源:搜狗百科

更多推荐

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