本题目看似很无从下手,其实将题目进行分解可以知道,现剩n个台阶,下一步要么跳两个台阶,要么跳一个台阶,因此跳n个台阶就相当于剩下n-1台阶和剩下n-2个台阶跳法的和,即f(n)=f(n-1)+f(n-2),联想到斐波那契数列可求解。
int numWays(int n)
{
long int i = 1, j = 2,cnt = 0;
cnt = n;
long int ans = 0;
if(n == 0 || n == 1)
{
return 1;
}
if (n == 2)
{
return 2;
}
while(cnt > 2)
{
ans = i%1000000007 + j%1000000007;
i = j%1000000007;
j = ans%1000000007;
cnt--;
}
return j;
}