以下函数的增长率是多少?

时间:2013-03-09 05:25:50

标签: time-complexity big-o

根据Big O表示法,以下函数的增长率是多少?

f (n) = Comb(1000,n) for n = 0,1,2,…


int Comb(int m, int n)
{
    int pracResult = 1;
    int i;

    if (m > n/2) m = n-m;

    for (i=1; i<= m; i++)
    {
        pracResult *= n-m+i;
        pracResult /= i;
        practicalCounter++;
    }

    return pracResult;

}

递归:

int combRecursive (int m, int n)
{
    recursiveCounter++;
    if (n == m) return 1;
    if (m == 1) return n;
    return combRecursive(n-1, m) + combRecursive(n-1, m-1);

}

我猜n ^ 2 ???我可能错了......但我一直在努力弄清楚事情的效率......

先谢谢你。

2 个答案:

答案 0 :(得分:0)

这是O(1)

根据定义,f(n) = O(g(n))如果存在c,则所有nf(n) <= c*g(n)

c = Comb(1000,500)

适用于所有nComb(1000, n) < c * 1。因此Comb(1000, n) = O(1)

答案 1 :(得分:0)

对于n = 1到2000,将有与n

成比例的操作

对于所有n&gt; 2000年,总运营量不变。

因此,函数复杂度为O(1)

我必须告诉你,你必须读一些书。 :)
Sahni的数据结构和算法非常轻松。 Knuth的算法很重,但最好。

相关问题