Space 递归的复杂性
Space Complexity for Recursion
对于一个简单的程序:
public class solution{
public void start(int m, int n){
for(int i = 0; i < m; i++)
recur(n);
}
public void recur(int n){
for(int j = 0; j < n; j++)
recur(n-1);
}
}
谁能帮我分析一下 space 的复杂性?我认为是 O(m*n).
谢谢。
调用堆栈永远不会超过 O(n) 个元素,所以这就是 space 的复杂性。递归树的每个分支都将被处理,而仅位于其他分支上的其他元素不会占用任何 space,并且树的深度为 O(n),所以这就是我们需要的 space。
对于一个简单的程序:
public class solution{
public void start(int m, int n){
for(int i = 0; i < m; i++)
recur(n);
}
public void recur(int n){
for(int j = 0; j < n; j++)
recur(n-1);
}
}
谁能帮我分析一下 space 的复杂性?我认为是 O(m*n).
谢谢。
调用堆栈永远不会超过 O(n) 个元素,所以这就是 space 的复杂性。递归树的每个分支都将被处理,而仅位于其他分支上的其他元素不会占用任何 space,并且树的深度为 O(n),所以这就是我们需要的 space。