递归斐波那契算法的空间复杂度是多少?
这是从《破解编码面试》(第5版)开始的Fibonacci序列的递归实现。
int fibonacci(int i) { if(i == 0) return 0;
if(i == 1) return 1;
return fibonacci(i-1) + fibonaci(i-2);
}
在观看了有关该时间复杂度" title="算法的时间复杂度">算法的时间复杂度Fibonacci时间复杂度的视频后,我现在了解了为什么该算法以O(2
n )运行。但是,我正在努力分析空间的复杂性。
我在网上看了一下,对此有疑问。
在这个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)吗?
回答:
如果其他人仍然感到困惑,请务必观看此YouTube视频,其中讨论了生成斐波那契数列的空间复杂性。斐波那契空间复杂性
演示者非常清楚地说明了为什么空间复杂度为O(n),递归树的高度为n。
以上是 递归斐波那契算法的空间复杂度是多少? 的全部内容, 来源链接: utcz.com/qa/398105.html