1、递归的条件: 1、有调用函数自身 2、设置正确的返回条件 2、斐波那契数列的实现 3、pow()函数的递归实现 4、递归方式求最大公约数 5、汉诺塔 6、十进制转二进制递归实现 7、回文联递归实现 ...
分类:
编程语言 时间:
2018-01-28 19:09:38
阅读次数:
201
基础算法之三——递归法“汉诺塔问题” 题目描述 古代有一座汉诺塔,塔内有三个座A、B、C,A座上有n个盘子,盘子大小不等,大的在下,小的在上,如图所示。有一个和尚想把这n个盘子从A座移到C座,但每次只能移动一个盘子,并且在移动过程中,3个座上的盘子始终要保持大盘在下,小盘在上。在移动过程中可以利用B ...
分类:
编程语言 时间:
2018-01-27 20:25:00
阅读次数:
181
解题思路:1. 我们假设现在最小的圆盘在a柱子上,柱子为a,b,c 第一步:将最小圆盘移动到下一个柱子上,也就是b 第二步:对a柱子和c柱子进行顶上最小的元素进行判断,把小一点的那个圆盘移动到大一点的那个圆盘(有空则摞在空柱子上)。 重复上述两步就可以得到答案。 注意:这样得到的最后的答案不一定是摞 ...
分类:
其他好文 时间:
2018-01-27 17:06:42
阅读次数:
138
懒汉式递归——瞬间明白汉诺塔问题 Q. 为什么会有递归?A. 因为我们是人,不是电脑!我们的workingmemory有限! 游戏规则: 有A,B,C三根针,将A针上N个从小到大叠放的盘子移动到C针,一次只能移动一个,不重复移动,小盘子必须在大盘子上面。 问题: 总的移动次数是多少? 分析: 首先明 ...
分类:
其他好文 时间:
2018-01-27 13:49:06
阅读次数:
194
https://www.nowcoder.com/acm/contest/67/D 思路: 先手动模拟一下过程,以下是模拟过程,按顺序表示第几步需要移动的盘标号 1 1 2 1 1 2 1 1 3 1 1 2 1 1 2 1 1 3 1 1 2 1 1 2 1 1 4 1 1 2 。。。。。。 我们 ...
分类:
编程语言 时间:
2018-01-23 00:55:06
阅读次数:
173
非递归算法: 根据圆盘的数量确定柱子的排放顺序: 若n为偶数,按顺时针方向依次摆放 A B C; 若n为奇数,按顺时针方向依次摆放 A C B。 然后进行如下操作: (1)按顺时针方向把圆盘1从现在的柱子移动到下一根柱子,即当n为偶数时,若圆盘1在柱子A,则把它移动到B;若圆盘1在柱子B,则把它移动 ...
分类:
编程语言 时间:
2018-01-21 13:52:41
阅读次数:
180
python入门,hhh 在慕课网上学习python入门,编写汉诺塔的递归调用时,代码正确。但是加上注释后编译不通过 报如下错误: 原因如下: Python默认是以ASCII作为编码方式的,如果在自己的Python源码中包含了中文(或者其他非英语系的语言),此时即使你把自己编写的Python源文件以 ...
分类:
编程语言 时间:
2018-01-17 23:32:01
阅读次数:
236
python 浅谈 递归函数 最近在自学一些python,找了些资料。自己慢慢研究到了递归函数这一章,碰到个很经典的例子。汉诺塔的移动。一开始尝试自己写的时候发现,这东西怎么可能写的出来。但是看到别人写出来以后发现,这东西真的能写出来。 本着借鉴的目的想去分析一下别人写的东西。觉得很有意思想给大家分 ...
分类:
编程语言 时间:
2018-01-16 18:23:50
阅读次数:
229
汉诺塔是印度一个古老传说的益智玩具。汉诺塔的移动也可以看做是递归函数。 我们对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为: 如果a只有一个圆盘,可以直接移动到c; 如果a有N个圆盘,可以看成a有1个圆盘(底盘) + (N-1)个圆盘,首先需要把 (N-1) 个圆盘移动到 b,然后,将 ...
分类:
编程语言 时间:
2018-01-15 18:42:30
阅读次数:
142
算法: 当只有一个盘子的时候,只需要从将A塔上的一个盘子移到C塔上。 当A塔上有两个盘子是,先将A塔上的1号盘子(编号从上到下)移动到B塔上,再将A塔上的2号盘子移动的C塔上,最后将B塔上的小盘子移动到C塔上。 当A塔上有3个盘子时,先将A塔上编号1至2的盘子(共2个)移动到B塔上(需借助C塔),然 ...
分类:
其他好文 时间:
2018-01-13 19:01:27
阅读次数:
116