【练习】跳台阶问题
/************************************************************************/ /* 跳台阶问题 题目:一个台阶总共有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; }