📜  门| GATE-CS-2005 |第 82 题

📅  最后修改于: 2021-09-25 04:54:54             🧑  作者: Mango

考虑以下 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 < n 的值。通过此修改,函数foo() 的时间复杂度显着降低。修改后的函数的空间复杂度为:
(一) O(1)
(B) O(n)
(C) O(n!)
(D) O(n n )答案:(乙)
说明:空间复杂度现在也是 O(n)。

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