Java 递归方法如何帮助打印数组

Java 递归方法如何帮助打印数组,java,arrays,recursion,println,Java,Arrays,Recursion,Println,它是一个使用递归打印数组的程序。有谁能告诉我上面的方法是如何工作的吗?该方法打印一个数组,该数组必须是名为value的实例或类变量 未考虑初始给定索引 该方法从最顶端的索引开始,并使用递减1的索引调用自身。 当它达到索引0时,这是返回链的开始。 从递归调用返回后,将在索引本身之后打印当前索引处的值 一个呼叫打印在下一个呼叫下。 这些行从索引0开始,在索引i-1(用于初始调用的索引)处停止 更新:多亏了@Turing85,我修正了自己对打印索引的假设。示例:I=3=>printarray(3)

它是一个使用递归打印数组的程序。有谁能告诉我上面的方法是如何工作的吗?

该方法打印一个数组,该数组必须是名为
value
的实例或类变量

未考虑初始给定索引

该方法从最顶端的索引开始,并使用递减1的索引调用自身。 当它达到索引0时,这是返回链的开始。 从递归调用返回后,将在索引本身之后打印当前索引处的值

一个呼叫打印在下一个呼叫下。 这些行从索引0开始,在索引i-1(用于初始调用的索引)处停止


更新:多亏了@Turing85,我修正了自己对打印索引的假设。

示例:I=3=>printarray(3)

  • else块处于活动状态:printarray(2)
  • else块处于活动状态:printarray(1)
  • else块处于活动状态:printarray(0)
  • 如果块处于活动状态,因为i=0并返回

调试器肯定可以。做笔试和纸试。每次调用
printary(…)
,都要用一张单独的纸。你的意思是什么???互联网上有很多关于递归的解释,很多关于堆栈溢出的解释。你在哪里迷路了?@Prune我试着用打印语句来理解它,但我在最后一行感到困惑,我只搜索了它,但无法理解为什么我把它放在这里。不要认为我没有搜索它,直接把它放在这里question@Turing85我想知道一件事。如果i==0,它返回,那么在最后一行我的价值1.我说得对吗?@arunodaysingh我无法理解你的想法。如果达到
返回值
,则立即中止方法。从这一点开始,执行将继续上面的一个调用堆栈(很可能是
printarray
)。这个调用框架有它自己的(旧)值
i
,因为Java总是传递值。@Turing85非常感谢您的帮助。事实上,我忘记了按值调用。我无法理解最后一行是如何以i=1开头的。但是通过您的评论,我能够理解。非常感谢您的帮助。。
void printarray(int i) {
    if (i == 0) {
        return;
    } else {
        printarray(i - 1);
    }
    System.out.println("[" + (i - 1) + "]" + values[i - 1]);
}