考虑以下C函数:
double foo (int n)
{
int i;
double sum;
if (n = = 0) return 1.0;
else
{
sum = 0.0;
for (i = 0; i < n; i++)
sum += foo (i);
return sum;
}
}
假设我们修改了上面的函数foo()并在计算它们时存储了foo(i)的值0 <= i
(B) O(n)
(C) O(n!)
(D) O(n n )答案: (B)
说明:现在的空间复杂度也是O(n)。
我们将需要一个大小为O(n)的数组。递归调用所需的空间为O(1),因为值将从存储的数组中获取,而不是一次又一次地进行函数调用。
这个问题的测验