C++算法之 斐波那契数列

题目:写一个函数,输入n,求斐波那契数列的第n项。

 

方法1:递归:

int fib2(int n)
{
	if(n == 0)
	  return 0;
	if(n == 1)
	  return 1;
	return fib2(n-1)+fib2(n-2);
}

缺点:如果n比较大,那么递归程度比较深

 

方法2:

int fib(int n)
{
	int result[2] = {0,1};
	if(n < 2)
		return result[n];
	int fibOne = 0;
	int fibTwo = 1;
	int fibN   = 0;
	int i = 0;
	for(i = 2; i <= n; i++)
	{
		fibN = fibOne + fibTwo;
		
		fibOne = fibTwo;
		fibTwo = fibN;
	}
	
	return fibN;
}


避免了无穷的的递归问题,一个循环时间复杂度为O(n);

你可能感兴趣的:(c/c++)