以下方法的时间复杂度

时间:2013-03-26 10:10:42

标签: java time-complexity

我正在尝试确定以下方法的时间复杂度。在开始我有三个for循环,它将产生m ^ 3。我不知道如何确定,在方法结束时递归调用的时间复杂度是多少。

有人可以帮我这个吗?

void p(int n, int m) {
    int i,j,k ;
    if (n > 0) {
        for (i=0 ; i < m ; i++)
            for (j=0 ; j < m ; j++)
                for (k=0 ; k < m ; k++)
                    System.out.println(i+j*k) ;  
        p(n/m, m) ;
    }
 }

2 个答案:

答案 0 :(得分:2)

正如你所提到的,

O(m ^ 3)是没有附加回忆的执行。

总时间只是这一步的倍数。

对于n = m ^(k-1)是执行k次的步骤,因此它具有O(k * m ^ 3),即O(ln(n)* m ^ 3)。

答案 1 :(得分:0)

遵循以下步骤将允许您以正式方式推断时间复杂度:

enter image description here