考虑以下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;
}
}
上述函数的空间复杂度为:
(A) O(1)
(B) O(n)
(C) O(n!)
(D) O(n n )答案: (B)
说明:请注意,函数foo()是递归的。空间复杂度为O(n),因为一次最多可以有O(n)个活动函数(函数调用帧)。
这个问题的测验