【题目描述】
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
【解题思路】
本质就是斐波那契数列。
对于青蛙的最后一跳,它可以跳一个上去,也可以跳两个上去。
即f(n)=f(n-1)+f(n-2)。
【代码实现】
1 class Solution { 2 public: 3 int jumpFloor(int number) { 4 if(number<=1) 5 return number; 6 int target=0; 7 int first=1; 8 int second=1; 9 for(int i=2;i<=number;++i) 10 { 11 target=first+second; 12 first=second; 13 second=target; 14 } 15 return target; 16 } 17 };
【举一反三】
1、一只青蛙一次可以跳上1级台阶,也可以跳上2级,……,它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
【解题思路】
通过数学归纳法证明:f(n)=2^n-1
1 class Solution { 2 public: 3 int jumpFloor(int number) { 4 if(number<=0) 5 return 0; 6 else 7 return 1<<(number-1); 8 } 9 };