以下伪代码的Big-O运行时间是什么:
rec(int N) {
if (N<0) return;
for i=1:N {
for j=1:N {
print("waste time");
}
rec(N-1);
}
}
如果我的理解是正确的,那么此代码的准确运行时间将是
N^2 * 1 + (N-1)^2 * N + (N-2)^2 * N * (N-1) ... + N!
或等效
(N-k)^2 * nPk from k=0 to k=N-1
Big O运行时是否仍为O(N!)?如果我们嵌套了#34;浪费时间&#34;循环甚至更多?如果我们取代&#34;浪费时间&#34;用一个需要2 ^(N-k)时间而不是(N-k)^ 2时间的东西循环?
我的猜测是,所有这些问题的答案仍然是O(N!)因为该系列的最后几个术语占主导地位。如果我错了,请纠正我。