【题目】跳台阶问题。一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级。求总共有多少总跳法,并分析算法的时间复杂度。
【思路】思路1:可以把n看成1和2的组成,问题可以转变为n由多少个1和2组成,以i个2为例就是n-i的i个2的组合。
思路2:第一次只跳1 级,此时跳法数目等于后面剩下的n-1 级台阶的跳法数目,即为f(n-1);另外一种选择是第一次跳 2级,此时跳法数目等于后面剩下的 n-2级台阶的跳法数目,即为f(n-2)。因此n 级台阶时的不同跳法的总数f(n)=f(n-1)+(f-2),这就成了Fibonacci序列。
【代码】