Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这个斐波那契实现的时间复杂度是多少?_Javascript_Loops_Time Complexity_Fibonacci - Fatal编程技术网

Javascript 这个斐波那契实现的时间复杂度是多少?

Javascript 这个斐波那契实现的时间复杂度是多少?,javascript,loops,time-complexity,fibonacci,Javascript,Loops,Time Complexity,Fibonacci,我只是想知道是否有人能解释一下这段代码背后的时间复杂性。谢谢 function fib(N) { var arr = [0, 1, 1]; for (i = 3; i <= N; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } return arr[N]; } 函数fib(N){ var-arr=[0,1,1]; 对于(i=3;i,我们可以将代码分成几个部分,并逐部分进行分析 var arr = [0, 1, 1]; 此部分

我只是想知道是否有人能解释一下这段代码背后的时间复杂性。谢谢

function fib(N) {
  var arr = [0, 1, 1];
  for (i = 3; i <= N; i++) {
    arr[i] = arr[i - 1] + arr[i - 2];
  }
  return arr[N];
}
函数fib(N){
var-arr=[0,1,1];

对于(i=3;i,我们可以将代码分成几个部分,并逐部分进行分析

var arr = [0, 1, 1];
此部分具有
O(1)
,因为它甚至不依赖于
N

for (i = 3; i <= N; i++) {
  arr[i] = arr[i - 1] + arr[i - 2];
}
同样,执行
arr[3]
arr[10000000]
之间的差异可以忽略不计,因此每次
O(1)
的时间复杂度都是相同的


该代码的总体时间复杂度是各部分复杂度中最大的,因此它是
O(n)

我们可以将代码分成几个部分,并逐部分进行分析

var arr = [0, 1, 1];
此部分具有
O(1)
,因为它甚至不依赖于
N

for (i = 3; i <= N; i++) {
  arr[i] = arr[i - 1] + arr[i - 2];
}
同样,执行
arr[3]
arr[10000000]
之间的差异可以忽略不计,因此每次
O(1)
的时间复杂度都是相同的


此代码的总体时间复杂度是各部分复杂度中最大的一个,因此它是
O(n)

O(n)。请声明所有变量。@NinaScholz您能解释一下吗?循环迭代次数(因此算法运行时)数组项的数量是线性关联的。也就是说,如果你将
N
增加两倍,你的代码将运行(大约)两倍的时间。这就是为什么你的算法时间复杂度是O(N)O(N)。请声明所有变量。@NinaScholz你能解释一下吗?循环迭代次数(因此算法运行时间)数组项的数量是线性关联的。也就是说,如果将
N
增加两倍,代码的运行时间(大约)将增加一倍。这就是为什么算法时间复杂度为O(N)