java - 以下方法的时间复杂度

标签 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) ;
    }
 }

最佳答案

正如您提到的,O(m^3) 是在没有额外递归的情况下执行。

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

对于 n = m^(k-1) 来说,步骤执行了 k 次,因此它的时间复杂度为 O(k*m^3),即 O(ln(n)*m^3)。

关于java - 以下方法的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15634348/

相关文章:

java - Web服务仅限于单线程?

arrays - 查找算法的平均情况复杂度

algorithm - 确定该算法的 Big-O

java - 在算法的复杂性中取什么作为n

java - 改进 Mitchell 的最佳候选算法

java - 如何更快地搜索 byte[] 中的字节?

java - 在 hibernate Multi-Tenancy 应用程序中启动时不查找数据源

java - 运行时的 MapActivity ClassDefNotFoundException

java - 为什么时间复杂度是n*n*n!对于以下算法打印字符串的所有排列?

javascript - 这段短代码的大O