方法的复杂性

时间:2013-09-18 09:40:26

标签: algorithm space-complexity

我在接受采访时被问到这个问题。这是该方法的复杂性吗?

static int magic(int n) {
    System.out.println( count+" "+ n);
    count++;
    return (n < 2) ? n : magic(n - 1) + magic(n - 2);
}

1 个答案:

答案 0 :(得分:2)

复杂性是指数级的。

除了基本情况(当n <2时),对方法的每次调用都会调用自己两次。您可以绘制表示调用的二叉树。例如,如果你用5作为参数调用magic:

fibonacci tree

树没有完美平衡,但它不会改变大O符号,即O(2 ^ n)。

你的算法是一个fibonnaci序列算法,所以你可以在互联网上阅读很多,包括如何将其复杂性改为多项式时间。