Big-O递归函数的运行时间

时间:2015-09-20 20:42:23

标签: recursion big-o

以下伪代码的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!)因为该系列的最后几个术语占主导地位。如果我错了,请纠正我。

0 个答案:

没有答案