gpt4 book ai didi

java - 了解我创建的递归方法

转载 作者:行者123 更新时间:2023-11-30 08:16:07 25 4
gpt4 key购买 nike

这是一个非常具体的问题,但希望能帮助我进一步理解递归。

我们应该制作一个打印帕斯卡三角形的递归方法。一段时间后,我终于让它工作了,但我仍然不太明白我是如何到达那里的。

public static int[] pascalLine(int order){
// ska räkna ut n:te linjen i pascals triangel
int [] arr = new int[order];
if (order < 0){
throw new IllegalArgumentException("Value must be greater than 0");
}
else if(order == 1){
return new int [] {1};
}
arr[0] = arr[order-1] = 1;
int [] arrRev = pascalLine(order-1);
System.out.println(toString(arrRev));
for (int i = 1; i<arrRev.length; i++){
arr[i] = arrRev[i-1] + arrRev[i];
}
return arr;
}

我正在打印直到第 5 行的整个三角形。我不明白这是怎么可能的。我的思考过程是该方法会调用自身,直到达到 0 并给出异常。

但是也许方法的第一次调用(在 main 中)仍在进行,而另一个已经开始(在方法内部的调用处)并且一直持续到 1(仍然不明白为什么它不虽然达到零)。

最佳答案

只有当对 pascalLine 的初始调用有一个负的 order 时才会抛出异常。

else if(order == 1){
return new int [] {1};
}

递归在 order == 1 时终止,因此如果您以正 order 开始,则永远无法达到负 order

pascalLine(order-1) 仅在 order > 1 时调用。

关于java - 了解我创建的递归方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28478380/

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