如何使用for循环实现O(C ^ n)时间复杂度函数?

时间:2015-03-30 05:01:24

标签: javascript performance algorithm

我唯一能想到的就是使用Math.pow()在循环之前计算n并且看起来像个警察。
在这个例子中C = 2:

var oCN = function (n)
{
    var j = Math.pow(2, n);
    for (var i = 0; i <= j; i++) {
          console.log('cactus');  
    };
    return;
}

1 个答案:

答案 0 :(得分:2)

像这样的递归算法会相对于n呈指数级增长:

var oCN = function (C, n)
{
    if (n < 1) { console.log('cactus'); return; }
    for (var i = 0; i < C; i++) {
        oCN(C, n-1);
    }
}

在此算法的情况下,记录的仙人掌数量正好是C^n,当然是O(C^n)。例如。 oCN(2, 4)记录cactus 16次,oCN(2, 5)记录32次,等等。

您通常不会看到很多日常算法在指数时间内工作。如果某些 在指数时间内完成,那么输入大小或常数很可能使得大O复杂度根本不重要(或者至少,实现者没有'非常关心)所以你可能不会坐在那里分析复杂性。程序员想做的大多数正常工作都可以通过多项式时间算法完成,也可以通过一些捏造和牺牲来实现。