斐波那契数列 LeetCode

题目

写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项。斐波那契数列的定义如下:f(n) = f(n-1)+f(n-2);

递归解法

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

此递归的时间效率是指数级,效率极低。

自低而上

f(n) = f(n-1) + f(n-2);

int dp[n+1];
dp[0] =0;
dp[1] = 1;
for(int i=2;i<=n;i++)
{
	dp[i] = dp[i-1] + dp[i-2];
}
return dp[n];

自低而上的方法时间效率是O(n), 空间效率是O(n);

更快的效率 矩阵乘法

时间效率是O(logn);

你可能感兴趣的:(斐波那契数列 LeetCode)