O-符号练习问题,了解部分代码

时间:2018-11-18 17:51:08

标签: java

您好:)我必须解决有关O符号的一些练习。每种运动都可以,但是却让我感到困惑,我也不知道该如何解决。也许有人可以解释我如何找到正确的O标记。

 double g(int x, int y) {
    double s = 0.0D;
    for (long i = f(x, y); i >= 0; i--) {
        s++;
    }
    return s;
}

我的问题是f(x,y)。我该如何理解这一部分? 提前致谢。 :)

2 个答案:

答案 0 :(得分:1)

循环迭代f(x, y)次。

没有定义f的时间复杂性,我们可以给出的最准确的描述是:

O(f(x, y))

-

请注意,这并不是一种特殊的表示法,因为我们已经根据其他标准函数(例如,

O(log(n))

答案 1 :(得分:0)

没有足够的信息来确定正确的Big-O表达式,因此也难怪您会感到困惑。

g(x,y)有效地由一个函数调用f(x,y)和一个具有K迭代的循环组成,其中我们将K定义为f(x,y)的结果函数调用。

由于我们对f(x,y)函数的复杂性一无所知(例如O(1)O(x+y)O(x² + y²)吗?),我们无法知道它的影响g(x,y)的复杂性。

然后我们不知道f(x,y)函数结果K如何取决于xy的值,因此我们不知道循环多久一次运行。