运行时分析以下递归方法

时间:2013-04-14 16:25:42

标签: java recursion runtime analysis

有人可以帮助我对以下代码进行运行时分析:

public static void f(int n) 
{
    for (int i = 0; i <= n; i++) 
    {
        System.out.print("+" + i);
    }
    if (n <= 1) 
    {
        return;
    } else 
    {
        f(n / 3);
        f(n / 3);
    }
}

据我所知,代码的递归公式的运行时间是:

  

T(n)= cn + 2T(n / 3)

我认为答案应该是Θ(nlog(n)),但书籍解决方案显示它是Θ(n)。 此外,为了简单起见,本书还假设n = 3^k

有人可以向我解释正确的答案吗?

1 个答案:

答案 0 :(得分:0)

考虑使用Master Theorem。您的情况对应于情况1,其中f(n)= cn是O(n)。 a = 2且b = 3,并应用该定理,我们得到T(n)为bigTheta(n ^ log3(2)),即BigTheta(n)。

希望它有所帮助...