斐波那契数列

我在本地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刷题整合 文章被收录于专栏

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

全部评论

相关推荐

06-28 22:48
已编辑
广东金融学院 Java
小浪_Coding:学院本+这俩项目不是buff叠满了嘛
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-10 14:10
啊啊啊啊好幸福,妈妈是我找工作发疯前的一束光
黑皮白袜臭脚体育生:看了这篇帖子之后已经第一百次质问老妈,仍然没有得到我的老妈是老板的回答
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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