Java 递归的空间复杂性

Java 递归的空间复杂性,java,algorithm,space-complexity,Java,Algorithm,Space Complexity,对于一个简单的程序: 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); } } 公共类解决方案{ 公共

对于一个简单的程序:

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);
    }
}
公共类解决方案{
公共无效开始(整数m,整数n){
for(int i=0;i
有人能帮我分析一下空间的复杂性吗?我想是O(m*n)


谢谢。

调用堆栈永远不会超过O(n)个元素,这就是空间复杂性。递归树的每个分支都将被处理,而只有位于其他分支上的其他元素不会占用任何空间,而且树的深度是O(n),因此我们需要多少空间。

我同意你的看法。因为循环计数器<代码> i <代码> <代码>起始()>代码>独立于调用<代码> ReCurr(n)< /C> >,代码基本上是执行<代码> o(n)<代码>操作>代码> m>代码>时间,它给出了<代码> o(m*n)正如您所说的。在编码访问中,当我们讨论空间复杂性时,是否应该考虑堆空间,堆栈空间,还是两者都有?@Sriram,我不知道;我会提到这些,并询问他们是否希望这一点包括在你的分析中,或者说你是否认为应该包括在内。悲观的选民能告诉我这个答案有什么问题吗?