一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
分析:假定跳n级台阶的方法是关于n的函数F(n),现在要跳n级台阶,如果最后一次跳了1步,那么前面的(n-1)级有F(n - 1)种跳法;如果最后一次跳了两步,则前面的(n - 2)级有F(n - 2)种跳法,即F(n) = F(n - 1) + F(n - 2),n > 2。(斐波那契数列)
1 namespace JianZhiOffer 2 { 3 class JumpFloor 4 { 5 public int jumpFloor(int number) 6 { 7 // write code here 8 int one = 1; 9 int two = 2; 10 int three = 0; 11 12 if (number < 1) 13 { 14 return 0; 15 } 16 else if (number == 1) 17 { 18 return 1; 19 } 20 else if (number == 2) 21 { 22 return 2; 23 } 24 else 25 { 26 //return (jumpFloor(number - 1) + jumpFloor(number - 2)); 27 for (int i = 3; i <= number; i++) 28 { 29 three = one + two; 30 one = two; 31 two = three; 32 } 33 return three; 34 } 35 } 36 } 37 }