以文本方式查看主题 - 搭建论坛 (http://bbs.diylsoft.com:8118/starforum/index.asp) -- 经验交流 (http://bbs.diylsoft.com:8118/starforum/list.asp?boardid=5) ---- 练练手,再来一题,递归 (http://bbs.diylsoft.com:8118/starforum/dispbbs.asp?boardid=5&id=2670) |
||||
-- 作者:快乐花之舞 -- 发布时间:2004-11-19 22:51:20 -- 练练手,再来一题,递归 程序结构中非行重要的 1. 循环 2.递归 3.叠带 这里来一个,这个题循环是没办法做的了,呵呵!! 有一个上梯子的问题 一个人一步只能上一个台阶或者上两个台阶 那么如果一个梯子有1个台阶 那么上这个梯子的方法有几种? 很显然,只有一种 如果这个梯子有2个台阶呢? 可以走的方法是 方法1:先上一梯,再上一梯 方法2:直接上两梯 所以如果有两梯,就有两中走法 如果梯子有3梯呢? 这里要改变思路了, 由于这个人一步只能上一梯或者上两梯 那么到第三梯上,只可能是从第二梯或者第一梯上去 也就是说,上第三梯的方法的总数就是上第一梯与上第二梯的方法之和 同理:上第100梯有多少种走发呢? 上100梯的走发 = 上99梯的走法 + 上98梯的走法 抽象成数学模型:设数列a[n] a[1]=1 a[2]=2 a[3]=a[1] + a[2] ............ a[100]=a[99] + a[98] a[n] = a[n-1] + a[n-2] 各位,能算出上1000梯的走法总数a[1000]吗? 这个是个递归问题 比较难的,可以思考一下,锻炼一下思维。 [此贴子已经被作者于2004-11-19 22:52:32编辑过]
|
||||
-- 作者:快乐花之舞 -- 发布时间:2004-11-19 23:15:02 -- a[1000]太大了 算出a[30]不会死机的 太大就不敢保证了 |
||||
-- 作者:快乐花之舞 -- 发布时间:2004-11-19 23:20:16 -- 可能循环也能做,说不定速度还会快一点 |
||||
-- 作者:快乐花之舞 -- 发布时间:2004-11-19 23:42:26 -- 循环递归都能做 不过循环的速度快多了 不过思维上,递归要方便很多! |
||||
-- 作者:lizhelong -- 发布时间:2004-11-20 13:20:20 -- 又有新题拉?我晚上回来做~! |
||||
-- 作者:lizhelong -- 发布时间:2004-11-20 17:57:28 -- 我的算法并不复杂只是利用了规律 A1=1 A2=2 A3=A1+A2 A4=A1+2*A2 A5=2*A1+3*A2 由此可以看出 A5 中 A1前面的系数=A4 中 A2 前的系数。 A5 中 A2 前的系数=A4 中的 A1前 和 A2前 系数之和,。我就是利用这个规律的。 [此贴子已经被作者于2004-11-22 13:12:27编辑过]
|
||||
-- 作者:快乐花之舞 -- 发布时间:2004-11-21 22:16:09 -- 在积木里面要看你的算发还真的比较困难 我看过了,是用的一个定时器 不知道是怎么算的,没看明白 这里我把积木使用循环的算发做出来你有空可以看看! 使用递归,能不能做我就不大清楚了
|
||||
-- 作者:lizhelong -- 发布时间:2004-11-21 22:48:00 -- 我的算法并不复杂只是利用了规律 A1=1 A2=2 A3=A1+A2 A4=A1+2*A2 A5=2*A1+3*A2 由此可以看出 A5 中 A1前面的系数=A4 中 A2 前的系数。 A5 中 A2 前的系数=A4 中的 A1前 和 A2前 系数之和,。我就是利用这个规律的。 [此贴子已经被作者于2004-11-22 13:13:02编辑过]
|