Javascript时间复杂度分析
你好,我一直在研究并试图学习如何检查某些算法的时间复杂度。我看过这段视频,非常有帮助 话虽如此,我还是感到困惑,并开始尝试解决Worsts案例和某些算法的平均案例 1. 我相信下面的代码片段是O(n),因为要为sin指定值,我们必须循环整个数组Javascript时间复杂度分析,javascript,arrays,time,time-complexity,big-o,Javascript,Arrays,Time,Time Complexity,Big O,你好,我一直在研究并试图学习如何检查某些算法的时间复杂度。我看过这段视频,非常有帮助 话虽如此,我还是感到困惑,并开始尝试解决Worsts案例和某些算法的平均案例 1. 我相信下面的代码片段是O(n),因为要为sin指定值,我们必须循环整个数组 function mySin(x, iterNum) { var mxx = -x*x; var sin = 1; var n = 0; var term = 1; for (var i = 1; i <=
function mySin(x, iterNum) {
var mxx = -x*x;
var sin = 1;
var n = 0;
var term = 1;
for (var i = 1; i <= 2*iterNum; i++) {
n = n + 2;
term = term * mxx / ( n*(n+1) );
sin = sin + term
}
sin = x*sin;
console.log(sin + " = my function.");
console.log(Math.sin(x) + " math.sin");
}
函数mySin(x,iterNum){
var mxx=-x*x;
var-sin=1;
var n=0;
var项=1;
对于(var i=1;i我认为这两个都是正确的。这里有更多的解释:
1.
这实际上是O(n),因为循环有n次迭代,剩余的时间是恒定的;n与iterNum成正比
2.
这也是线性时间,但只是因为缓存了以前计算的结果,否则它将是O(2n)。
这是线性时间,因为它基本上运行一个循环到基本情况(0和1)
function calculateFibonacciSum (num) {
if(cachedNumbers[num]) {
return cachedNumbers[num];
}
if(('number' === typeof num) && num <= 0) {
throw new Error ('Fibonnci series starts with 0. Please, enter any interget greater than or equal to 0');
}
else if(('number' === typeof num) && num === 0) {
return 0;
}
else if(('number' === typeof num) && (num === 1 || num === 2)) {
return 1;
}
else {
var value = calculateFibonacciSum(num-1) + calculateFibonacciSum(num-2);
cachedNumbers[num] = value;
return value;
}
}