一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。
首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级;另外一种就是一次跳2级。
此问题分开来看,可以看为第一次跳,与后面的跳,第一次跳有两种跳法,一次跳一级,和一次跳两级。那么,当第一次跳一级时,这种跳法
总的跳法为f(n-1),当第一次跳2级时,总跳法为f(n-2).因此,f(n)=f(n-1)+f(n-2)。有分治的思想。
我们把上面的分析用一个公式总结如下:
/ 1 n=1
f(n)= 2 n=2
/
f(n-1)+(f-2) n>2
递归可以解,用栈也可以,用矩阵也可以。
转自:http://zhedahht.blog.163.com/blog/static/25411174200731844235261/