Time complexity 以下函数的增长率是多少

Time complexity 以下函数的增长率是多少,time-complexity,big-o,Time Complexity,Big O,以下函数以大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; pract

以下函数以大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;

}
我猜是n^2???但我可能错了。。。我一直在努力弄清楚事情的效率有多高

感谢您的高级指导。

现在是
O(1)

根据定义,
f(n)=O(g(n))
如果存在
c
,那么对于所有
n
f(n)

对于n=1到2000,将有与n成比例的操作

对于所有n>2000,总操作数为常数

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

我必须告诉你,你必须读一些书
Sahni的数据结构和算法非常容易读取。
Knuth的算法非常繁重,但在最好的算法中。

我收回我的话。如果您所写的是正确的,那么您的函数在O(1)中运行。需要有关Comb()的更多信息,我道歉。我将很快更新这个问题。我已经更新了代码。@JLott:您是否100%确定您使用的变量m和n的顺序正确?您将n作为第二个参数传递,但第一个参数名为n。您真的认为这就是她所寻找的答案吗?:)@阿吉特,我想这就是问题的答案。令人惊讶的是,人们经常问一些实际上并不期望得到正确答案的问题。有时这甚至会导致他们接受错误的答案。这在政治上也经常发生。我觉得这是不可能的。。。此函数基本上查找给定m和n的组合数。。我可以通过我的代码如何运行来判断它在第一次运行时没有找到它,因为我在其中放置了一个计数器。但是,我这样做的效率要比递归方式高得多。@JLott,您的代码通过该循环
m
次,最多
n/2
。所以它肯定不止一次,但总是小于
500
(仍然是O(1))。无论如何,我想你们想知道你们在做多少计算,而不是函数的值是多少。那是另一个问题。即使在那里,你也应该小心,不要问有固定限制的问题。@JLott:如果你想对程序的执行时间建模,你可能需要考虑数字的大小,因为它们会变得非常大。如果你这样做了,你问
Comb(n,n/2)
的执行时间是多少,你可能会得到
O(n^2)
,就像你最初建议的那样。是的,我真的很惊讶哈哈。谢谢,我会研究一下:)算法从来都不是我喜欢的。我是一个试验和错误类型的人,当谈到他们哈哈哈。
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);

}