大门|大门-CS-2005 |问题82

考虑下面的C函数:

null

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 (A) O(1) (B) O(n) (C) O(n!) (D) O(n) N ) 答复: (B) 说明: 空间复杂性 现在也是O(n)。

我们需要一个大小为O(n)的数组。递归调用所需的空间将是O(1),因为值将从存储的数组中获取,而不是一次又一次地进行函数调用。 这个问题的小测验

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享