gpt4 book ai didi

java - 递归反向数组打印

转载 作者:行者123 更新时间:2023-12-02 07:06:42 28 4
gpt4 key购买 nike

我在一个答案中看到了这个算法,现在我有疑问是一个递归函数,有两个参数,一个整数数组和一个整数。目标是打印数组,但以相反的顺序,我测试了它并且它有效!但我不知道为什么......这是函数

public static void reverse(int[] a, int position) {
// BASE
if (position == a.length) return;
// RECURSIVE

reverse(a, position + 1);

System.out.println(a[position]);
}

}

如果条件为真,返回并不意味着程序结束?如果为 false,该函数将执行递归调用而不打印数字,或者不是?谢谢!

最佳答案

return 语句并不意味着程序将结束。这意味着该方法的该特定调用结束。

下一条语句是递归调用。它不断调用自身,并调用从 0 到数组长度的每个可能的位置。因此,代码第一次通过递归调用是在最后一个递归方法返回之后,并且 position 现在位于数组的末尾。然后它打印最后一个字符。它返回,并且先前的递归调用(具有先前的 position 值)打印倒数第二个字符,依此类推,直到对递归方法的原始调用打印第一个字符,并且然后就完成了。

例如对于长度为 3 的数组 {10, 11, 12}

reverse(a, 0)
reverse(a, 1)
reverse(a, 2)
reverse(a, 3)
base case; return
print a[2] "12"
print a[1] "11"
print a[0] "10"
done

关于java - 递归反向数组打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16024797/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com