程序结构中非行重要的
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编辑过]
a[1000]太大了
算出a[30]不会死机的
太大就不敢保证了
循环递归都能做
不过循环的速度快多了
不过思维上,递归要方便很多!
我的算法并不复杂只是利用了规律
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编辑过]
在积木里面要看你的算发还真的比较困难
我看过了,是用的一个定时器
不知道是怎么算的,没看明白
这里我把积木使用循环的算发做出来你有空可以看看!
使用递归,能不能做我就不大清楚了
思路是这样的:
检查输入(梯子的总数)x
如果为1
返回1
如果为2
返回2
如果为大于等于3的就用循环计算
计算方法
m=1
n=2
如果x为奇数
m=m+n
如果x为偶数
n=m+n
循环到结束
结束后,根据x的奇偶性得到返回值
x为奇数,返回m
x为偶数,返回n
计算出来了
我的算法并不复杂只是利用了规律
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编辑过]