Recursion 递归函数的Big-O运行时间
以下伪代码的Big-O运行时间是多少:Recursion 递归函数的Big-O运行时间,recursion,big-o,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-k)^2 * nPk from k=0 to k=N-1 大O运行时仍然是O(N!)?如果我们将“浪费时间”循环嵌套得更多呢?如果我们将“浪费时间”循环替
rec(int N) {
if (N<0) return;
for i=1:N {
for j=1:N {
print("waste time");
}
rec(N-1);
}
}
或同等地
(N-k)^2 * nPk from k=0 to k=N-1
大O运行时仍然是O(N!)?如果我们将“浪费时间”循环嵌套得更多呢?如果我们将“浪费时间”循环替换为需要2^(N-k)时间而不是(N-k)^2时间的循环,会怎么样
我的猜测是,所有这些问题的答案仍然是O(N!),因为本系列的最后几个术语占主导地位。如果我错了,请纠正我。你是对的:在你所描述的所有场景中,它仍然是
O(n!)
,因为这是该系列的主要因素-阶乘增长比其他因素快得多,它很快成为算法运行时间的主要瓶颈
除非将浪费时间循环替换为比O(n!)
更糟糕的循环(例如O(n^n)
),否则它将始终是O(n!)
(N-k)^2 * nPk from k=0 to k=N-1