我正在阅读《破解面试官》,关于第45页的某个内容有问题。
有一个示例算法如下:
int f(int n){
if (n <= 1)
return 1;
return f(n - 1) + f(n - 1);
}
对于这个算法,它给出以下评论:
此算法的空间复杂度为O(N)。虽然树中总共有O(2^N)个节点,但是在任何时候只有O(N)个节点存在。因此,我们只需要有O(N)的内存可用。
我不太理解为什么在任何时候只有O(N)个节点存在。它们难道不都在调用堆栈中吗?有人能解释一下吗?
**
表示指数运算,因为^
已经被用于异或运算。所以在你可能更熟悉的表示法中,这就是O(2^N)
。 - btilly