Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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_Arrays_Time_Time Complexity_Big O - Fatal编程技术网

Javascript时间复杂度分析

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 <=

你好,我一直在研究并试图学习如何检查某些算法的时间复杂度。我看过这段视频,非常有帮助

话虽如此,我还是感到困惑,并开始尝试解决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 <= 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;
    }
}