/************************************************************************/
/*
跳台阶问题
题目:一个台阶总共有n 级,如果一次可以跳1 级,也可以跳2 级。
求总共有多少总跳法,并分析算法的时间复杂度。
思路:其实就是一个Fibonacci数列求解f(n)=f(n-1)+f(n-2);n>2;
本题的时间复杂度为O(n)*/
/************************************************************************/
#include <iostream>
using namespace std;
int Fibonacci(int n)
{
if (n<0)
{
return 0;
}
else if (1==n||2==n)
{
return n;
}
else
{
int a[2]={1,2};
int sum=0;
for (int i=3;i<=n;i++)
{
sum=a[0]+a[1];
a[0]=a[1];
a[1]=sum;
}
return sum;
}
}
int main()
{
int n;
cout<<"input n\n";
cin>>n;
cout<<Fibonacci(n);
return 0;
}