【练习】跳台阶问题

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

  

posted @ 2011-11-23 15:14  refazy  阅读(424)  评论(0编辑  收藏  举报