剑指Offer第8题:跳台阶
题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
解题思路:此题跟计算斐波那契数列一样,令n为台阶的阶数,则f(n)=f(n-1)+f(n-2)
注意初始条件的不同,当n=2时候,f(n)=2,与斐波那契数列之间相差一位。如下表所示,a列为最终输出的结果,b列为上一次的结果,在斐波那契数列中,f(2)=1,而在此题f(2)=2,因此需要调整初始位置,使得idx==0时,a=1,b=0
idx | a | b |
---|---|---|
0 | 0 | 1 |
1 | 1 | 0 |
2 | 1 | 1 |
3 | 2 | 1 |
4 | 3 | 2 |
1 | int jumpFloor(int number) { |