#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
long long FI[75]={0,1,2};
int n;
for(int i=3;i<=70;i++)
{
FI[i]= FI[i-1]+FI[i-2];
}
while(~scanf("%d",&n))
{
printf("%ld\n",FI[n]);
}
return 0;
}
/**************************************************************
Problem: 1388
User: 萧然677
Language: C++
Result: Accepted
Time:0 ms
Memory:1520 kb
****************************************************************/
跳n级台阶可以分解为跳了(n-1)阶后再跳1级 + 跳了(n-2)阶后再跳2级。不难发现这是个斐波那契数列。当台阶只有一级时,即n=1时,总的跳法只有1种。当n=2时,两种方法:(1)一次跳一下,跳两次;(2)一次跳两级,跳一下。因此得到初值后即可。代码直接拿了上一题的。
总结:以后碰到类似问题,能一眼发现这个是斐波那契数列吗???