有没有快速算法?

来源:大学生村官网 作者:佚名
  1.一个人上楼,他有两种走法,走一阶或走两阶,问他上30阶楼梯有几种走法?
1.解:设上n级楼梯的走法为a(n),则a(n)的值等于是a(n-1)的值与a(n-2)的值的和,比如上5级楼梯的走法是4级楼梯走法和3级楼梯走法的和,因为走3到级时再走一次(2级)就到5级了,同样,走到4级时再走一级也到5级了。从而a(n)=a(n-1) a(n-2),是斐波纳契数列。
显然1阶楼梯1种走法,a(1)=1,2阶楼梯2种走法,a(2)=2,所以a(3)=1 2=3,a(4)=2 3=5,a(5)=3 5=8,...,a(30)=1346269.
所以1346269即为所求。
象这样算要算到什么时候,算完恐怕时间早就到了.
有没有快速算法,请教一下大家!