这个给定代码片段的 Space 复杂度是多少?
What is the Space Complexity of this given code snippet?
时间复杂度为O(2^N)。如何导出此代码的 space 复杂度?
int f(int n){
if(n <= 1){
return 1;
}
return f(n-1) + f(n-1);
}
Space 算法的复杂度是算法相对于输入大小的总 space。 Space 复杂性包括输入使用的辅助 space 和 space。
基本上代码片段是一个递归代码
对于输入 n 它递归地调用 n-1
值 3 的调用示例:
f(3)
f(2) + f(2)
f(1) + f(1) [对于一个 f(2) ,和其他两个一样]
执行顺序会像DFS遍历
由于递归,程序将重用之前使用的相同程序space。
树的最大深度将导致 space 复杂度
O(N) - 其中 N 是输入数字
对于递归工作程序使用 Stack Memory
时间复杂度为O(2^N)。如何导出此代码的 space 复杂度?
int f(int n){
if(n <= 1){
return 1;
}
return f(n-1) + f(n-1);
}
Space 算法的复杂度是算法相对于输入大小的总 space。 Space 复杂性包括输入使用的辅助 space 和 space。
基本上代码片段是一个递归代码 对于输入 n 它递归地调用 n-1
值 3 的调用示例:
f(3) f(2) + f(2) f(1) + f(1) [对于一个 f(2) ,和其他两个一样]
执行顺序会像DFS遍历
由于递归,程序将重用之前使用的相同程序space。
树的最大深度将导致 space 复杂度
O(N) - 其中 N 是输入数字
对于递归工作程序使用 Stack Memory