Java O(3^n)指数时间复杂度

Java O(3^n)指数时间复杂度,java,algorithm,big-o,time-complexity,Java,Algorithm,Big O,Time Complexity,这段代码是否给了我Oc^k指数时间复杂度 n次方的计算3并不复杂。您的算法复杂度是Oc,因为它只迭代c次。要编写O3^n算法,一种方法是运行for循环3^n次。这种for循环的一个例子是: public void run(int n) { System.out.println(power(3, n)); } public int power(int c, int n) { int result = 1; for (int i = 0; i &l

这段代码是否给了我Oc^k指数时间复杂度

n次方的计算3并不复杂。您的算法复杂度是Oc,因为它只迭代c次。要编写O3^n算法,一种方法是运行for循环3^n次。这种for循环的一个例子是:

 public void run(int n)
    {
        System.out.println(power(3, n));
    }

public int power(int c, int n)
{
    int result = 1;
    for (int i = 0; i < c; i++) {
        result *= n;
    }
    return result;
}
这段代码是否给了我Oc^k指数时间复杂度

否。powerc,N执行循环的c乘法/迭代,因此它是OC。这意味着,因为c在runn中是一个常数,testn实际上是O1


另一件需要注意的是,powerc,n计算的是nc而不是cn。

老实说,如果你想让教你课程的人知道他们的问题陈述可能不是他们想要的,我会这样做:

for(long i = 0; i < Math.power(3, n); i++)
这是在Oc中,因为Oc是k>1的Ock的严格子集,所以它也在Ock中。这可能不是教你课程的人想要的,他们可能希望你写一个循环,在Θck中运行

另一方面:


ck和3n不是一回事。假设输入的长度为n,ck为常数时间,而3n为指数时间。假设输入的长度是c,ck是多项式,而3n是常数。假设输入的长度为k,则ck为指数,而3n为常数。

简短回答,否。计算3^n并不需要O3^n。无意冒犯,但不是一个接一个地发布作业,而是自己阅读和尝试。。。您在一行中发布了几乎相同的3个问题,int i=0;ifor(int i = 0; i < c; i++) { /*your code here*/}