递归斐波那契算法的空间复杂度是多少?
这是《破解编码访谈》(第5版)中斐波那契数列的递归实现
int fibonacci(int i) {
if(i == 0) return 0;
if(i == 1) return 1;
return fibonacci(i-1) + fibonaci(i-2);
}
在观看了有关此算法的时间复杂度的视频(斐波那契时间复杂度)之后,我现在明白了为什么该算法在O(2n)中运行。然而,我正在努力分析空间复杂性。
我在网上看了一下,对此有一个问题。
在这个Quora线程中,作者指出“在你的情况下,你有n个堆栈帧f(n),f(n-1),f(n-2),...,f(1)和O(1)”。你不会有2n堆栈帧吗?假设对于 f(n-2)一帧将用于实际的调用 f(n-2),但难道不是也有来自 f(n-1) 的调用 f(n-2)吗?