java - 使用递归的说明

标签 java recursion

class RecTest
{
    int values[];

    RecTest(int i)
    {
        values=new int[i];
    }

    void pray(int i)
    {
        if (i==0) return;
        else 
        {       
            System.out.println(+values[i-1]);
            pray(i-1);
        }
    }
}

class aka
{
    public static void main(String h[])
    {
        RecTest ob=new RecTest(10);
        int i;
        for(i=0;i<10;i++)
            ob.values[i]=i;
        ob.pray(10);
    }
}

这个程序工作正常,它按降序打印 9,8,7,6,5,4,3,2,1,0。 但是当我交换 System.out.println(+values[i-1]) 和ray(i-1) 语句时,它会按升序打印 0 到 9。

有人可以解释一下为什么会发生这种情况吗?

我就是无法理解它。 Source-Java-2,完整引用,第 5 版,第 171 页

最佳答案

无论您是在堆栈中打印还是返回堆栈,它都会发生变化。打印当前数字然后深入或深入然后打印当前数字。

3 >
    2 >
        1 >
        print 1
    print 2
print 3

3
print 3 >
         2
         print 2 >
                  1
                  print 1

关于java - 使用递归的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10670800/

相关文章:

Python合并函数数组范围错误?

python - 在python中递归打印钻石

java - 使用 andengine GLES2 通过引用传递 Sprite 会导致空指针异常

java - 解析java中可能是JSONObject或JSONArray的json字段

java - 如何在 Java 中格式化包含指数的复杂公式

ruby - 了解 Ruby 中的作用域

javascript - 递归 - javascript

Java递归-从数组中逆序整数,它是如何工作的?

java - 使用 Apache Beam 2.9.0 Java SDK 的 Google 数据流作业陷入困境

java - 各种线程