问题描述:spa
楼梯有N级台阶,上楼能够一步上一阶,也能够一步上二阶。编一递推程序,计算共有多少种不一样走法?ci
分析:原理
台阶数1……方法数F1=1程序
台阶数2……方法数F2=2方法
台阶数为3的时候,方法数F3的分析以下:co
分两类:
(1)第一步走1个台阶方法数是1;剩余的2个台阶方法数目为2.(这个是根据前述分析所得结果。)根据乘法原理,这一类状况下,走法数目为1*2=2种。
(2)第一步走2个台阶方法数是1;剩余的1个台阶方法数目为1.(这个是根据前述分析所得结果。)根据乘法原理,这一类状况下,走法数目为1*1=1种。
综上所述,台阶数为3时,根据加法原理,走法数目为F3=2+1=3种。
台阶数为4的时候,方法数目F4的分析以下:
分两类:
(1)第一步走1个台阶方法数是1;剩余的3个台阶方法数目为3.(这个是根据前述分析所得结果。)根据乘法原理,这一类状况下,走法数目为1*3=3种。
(2)第一步走2个台阶方法数是1;剩余的2个台阶方法数目为2.(这个是根据前述分析所得结果。)根据乘法原理,这一类状况下,走法数目为1*2=2种。
综上所述,台阶数为4时,根据加法原理,走法数目为F4=3+2=5种。
……
台阶数为n的时候,方法数目的分析以下:
分两类:
(1)第一步走1个台阶方法数是1;剩余的n-1个台阶方法数目为Fn-1.(这个是根据前述分析所得结果。)根据乘法原理,这一类状况下,走法数目为1*Fn-1种。
(2)第一步走2个台阶方法数是1;剩余的2个台阶方法数目为Fn-2.(这个是根据前述分析所得结果。)根据乘法原理,这一类状况下,走法数目为1*Fn-2种。
综上所述,台阶数为n时,根据加法原理,走法数目为Fn=Fn-1+Fn-2种。
因此,走n阶台阶的方法数目以下:(符合斐波列契数列(Faibonacci)的规则)
F1=1 ……(N=1)
F2=2 ……(N=2)
Fn=Fn-1 + Fn-2 ……(N>=3)