关于时间复杂度和空间复杂度的一道简单面试题(fibonacci数列)

FourthParty FourthParty 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
好象是哪里的习题忘记了。

计算fibonacci数列的两种方法:

递归算法为:
long Fib(int n)
{
if(n==1||n==2) //终止递归条件
return 1;
else
return Fib(n-1)+Fib(n-2);
}

/***********************
空间复杂度:因为存在递归栈,所以空间复杂度为O(n)
时间复杂度:因为每次递归有2次调用,时间复杂度也为O(n)
*********************/


非递归算法为
long Fib1(int n)
{
int a,b,c;//C代表当前项,a和b分别代表当前项前面的第2项和第1项
a=b=1; //给a和b赋初值1
if(n==1||n==2)
return 1;
else
for(int i=3;i<=n;i++){
c=a+b; //求出当前项
a=b;//把前面第1项赋给前面第2项
b=c;//把当前项赋给前面第1项
}
return c;//返回所求的第n项
}
/**************
空间复杂度:程序运行空间与n无关所以空间复杂度为O(1)
时间复杂度:因为有n-3次循环,时间复杂度也为O(n)
**************/

注释为我的做答,有没有把握?
...全文

相关推荐

C++实现Fibonacci数列递归及非递归算法

C++实现Fibonacci数列递归及非递归算法

sinkingcn

python斐波那契数列第n项.docx

python斐波那契数列第n项 斐波那契数列是指从0和1开始,后面的每一项都是前面两项的和。即:0、1、1、2、3、5、8、13、21、34、55、89、144、233、377、610……以此类推。这个数列在数学上有着重要的应用,也是计算机科学中常见的算法之一。 在Python中,我们可以通过递归或循环的方式来计算斐波那契数列的第n项。下面是两种方法的代码实现: 1. 递归方法 def fibonacci(n): if n <= 1: return n else: return fibonacci(n-1) + fibonacci(n-2) n = int(input("请输入要计算的斐波那契数列的项数:")) print("斐波那契数列的第", n, "项为:", fibonacci(n)) 2. 循环方法 def fibonacci(n): if n <= 1: python斐波那契数列第n项全文共2页,当前为第1页。 return n python斐波那契数列第n项全文共2页,当前为第1页。 else: a, b = 0, 1 for i in range(2, n+1): c

是空空呀

斐波那契数列,时间复杂度为o(log(N))的c++实现

斐波那契数列,用数学公式求解,时间复杂度为O(log(N)),用c++来实现的

cuirongcun

Fibonacci数列(非递归的函数调用)

Fibonacci数列,用c++编写的,非递归的函数调用求Fibonacci数列的第n项

jingjing_amy

Go语言实现Fibonacci数列的方法

本文实例讲述了Go语言实现Fibonacci数列的方法。分享给大家供大家参考。具体如下: Fibonacci数列:1,1,2,3,5,8,13,21,,, (即从第三项起,每一项的值都等于前两项之后) 第一种,使用递归: 代码如下:func fibonacci(a int) int {      if a == 1 || a == 2 {          return 1      }      return fibonacci(a-1) + fibonacci(a-2)  } 第二种,不使用递归: 代码如下:func fibonacci_version2(index int)

weixin_38613681
评论 5
收藏 已收藏
分享
返回顶部
FourthParty
C语言 70,039 成员 243,237 内容