题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
/*
1.考虑最简单的情况。只有1级台阶时,只有一种跳法,2级台阶时,2种跳法,一次跳一级或者一次跳两级。
2.一般情况。把n级台阶时的跳法看成是n的函数f(n)。
当n>2时,第一次跳的时候有两种选择。
一是第一次跳1级,此时跳法数目等于后面剩下的n-1级台阶的跳法数目f(n-1)。
二是第一次跳2级,此时跳法数目等于后面剩下的n-2级台阶的跳法数目f(n-2)。
因此,n级台阶的不同跳法总数f(n)=f(n-1)+f(n-2),实际上是斐波那契数列。
3.斐波那契数列:1 2 3 5 8 ...
*/
class Solution
{
public:
int jumpFloor(int number)
{
if (number <0)
return 0;
else if (number <2)
{
int result[2] = { 0,1 };
return result[number];
}
else
{
long long* fib = new long long[number] {1, 2};
long long fibn = 0;
for (int i = 3; i <= number; i++)
{
*(fib+i-1) = *(fib+i-2)+*(fib+i-3);
}
fibn = *(fib+number-1);
delete [] fib;
return fibn;
}
}
};