关于时间复杂度和空间复杂度的一道简单面试题(fibonacci数列)
计算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数列递归及非递归算法
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++来实现的
Fibonacci数列(非递归的函数调用)
Fibonacci数列,用c++编写的,非递归的函数调用求Fibonacci数列的第n项
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)


