具有嵌套递归的方法的大O复杂性

时间:2018-01-26 22:06:51

标签: algorithm loops recursion complexity-theory

试图找出以下算法的Big-O复杂性:

function foo1(a,b,c)
Begin
  for i:=1 to a do begin
    for j:=1 to b do begin
      if (c>1) then
        x=y+foo1(a,b,c-1);  
    end;
  end;  
End;

那么,我基本上认为:如果a,b和c是变量,则此函数具有O(n ^ n)复杂度。但是,我不太确定。

1 个答案:

答案 0 :(得分:1)

让我们将问题分成几部分:

1)第一个循环:它从 1 变为 a ,这意味着它需要一个步骤才能完成循环。

2)第二个循环:它从 1 变为 b ,这意味着它需要 b x a 完成这些循环。为什么?因为在 a 的每个循环中,您都会执行 b 循环。这意味着:b0 + b1 + b2 ... ba。因此 - > A * B

3)然后你应用递归步骤。该递归在第二个循环中重复 c 次。这意味着对于 b 中的每次迭代,您将重复整个过程。含义(a * b)0 *(a * b)1 *(a * b)2 ...(a * b)c。因此 - > O((a * b)^ c)