我正在尝试确定以下方法的时间复杂度。在开始我有三个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) ;
}
}
答案 0 :(得分:2)
O(m ^ 3)是没有附加回忆的执行。
总时间只是这一步的倍数。
对于n = m ^(k-1)是执行k次的步骤,因此它具有O(k * m ^ 3),即O(ln(n)* m ^ 3)。
答案 1 :(得分:0)
遵循以下步骤将允许您以正式方式推断时间复杂度: