gpt4 book ai didi

c - 这个c函数的复杂度是多少

转载 作者:太空狗 更新时间:2023-10-29 15:14:27 25 4
gpt4 key购买 nike

以下 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;
}
}

请不要只发布复杂性,你能帮助我理解如何去做吗。

编辑:这是考试中提出的客观问题,提供的选项是 1.O(1) 2.O(n) 3.O(n!) 4.O(n^n)

最佳答案

是 Θ(2^n)(假设 f 是我们有的算法的运行时间):

f(n) = f(n-1) + f(n-2) + ... + 1
f(n-1) = f(n-2) + f(n-3) + ...
==> f(n) = 2*f(n-1), f(0) = 1
==> f(n) is in O(2^n)

实际上如果我们忽略常量操作,准确的运行时间是2n

如果你写的是考试,O(n!) 和 O(n^n) 都是真的,其中最接近 Θ(2^n) 的答案是 O(n!),但是如果我是学生,我会标记他们两个:)


关于 O(n!) 的解释:

for all n >= 1: n! = n(n-1)...*2*1 >= 2*2*2*...*2 = 2^(n-1) ==>
2 * n! >= 2^n ==> 2^n is in O(n!),
Also n! <= n^n for all n >= 1 so n! is in O(n^n)

So O(n!) in your question is nearest acceptable bound to Theta(2^n)

关于c - 这个c函数的复杂度是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4529535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com