斐波那契数列

我在本地IDE中写了两种方法实现斐波那契数列,现在进行对比

//递归法:
int Fibonacci(int n)
	{
		if (n == 0)
		{
			return 0;
		}
		else if (n == 1||n == 2)
		{
			return 1;
		}
		return Fibonacci(n - 1) + Fibonacci(n - 2);
	}

假设我们求第5个斐波那契数列 alt 二叉树的节点数=(2^(n-1))-1,因此时间复杂度为O(2^n),递归栈的最大深度为n-1,因此空间复杂度为O(n),在计算中,n=3的时候计算了两次,因此导致递归法的时间复杂度上升。

//非递归法
int Fibonacci2(int n)
	{
		vector<int> res;
		if (n == 0)
		{
			return 0;
		}
		res.push_back(0);
		res.push_back(1);
		for (int i = 2; i <= n; ++i)
		{
			res.push_back(res[i - 1] + res[i - 2]);
		}
		return res.back();
	}

非递归法中程序循环了n-2次,因此时间复杂度为O(n).

Leetcode刷题整合 文章被收录于专栏

都是作者刷到的一些感觉是好题整理到一起的,辛苦整理不易,麻烦给个赞,有疑问请留言

全部评论

相关推荐

07-05 16:23
门头沟学院 Java
mengnankk:我投了300,约了5 6个面试。感觉项目写的太多了。一个项目就写五六个亮点,不是把整个项目的功能描述下。其他的没啥,简历看起来有点长
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务