gpt4 book ai didi

java - 计算整数数组中每个元素的阶乘

转载 作者:行者123 更新时间:2023-12-02 13:37:29 25 4
gpt4 key购买 nike

我需要在Java中创建一个有2个参数的方法,upperborder和lowerborder。此方法必须创建一个从数字 2 到数字 10 的数组。
然后我必须实现另一个方法,计算给定数字的阶乘。
然后,我必须实现第三种方法,计算创建的数组中每个元素的阶乘,并在 TestClass 中测试所有这些方法。

我知道如何做到这一点,但显然我在代码中犯了某种错误,它给了我 StackOverflow 异常。我读了几次代码,但似乎不太明白我错在哪里。

package fakultaetinarray;


public final class FakultaetinArray{
private int i;
private int[] a;
private int j;

public FakultaetinArray(){
System.out.println("Given array : ");
createArray(1, 9);
System.out.println("Factorial for every element : ");
FakinArray();

}
public int fakRe(int n){
if(n == 1){
return n;
}
return n * fakRe(n - 1);
}
public void createArray(int untergrenze, int obergrenze){
this.a = new int[obergrenze];
for(this.j = 1; j <= a.length; j++){
a[i] = j + 1;
System.out.println(a[i]);
}
}
public void FakinArray(){
a[0] = 2;
for(i = 1; i < a.length; i++){
int fak = fakRe(a[i]);
a[i] = fak;
System.out.println(fak);

}

}

}

最佳答案

您收到 StackOverflowError 的原因是您的递归方法没有出现 n == 0 的情况。

您的值以 0 形式出现的原因是由您构建循环的方式决定的。

for(this.j = 1; j <= a.length; j++){
a[i] = j + 1;
System.out.println(a[i]);
}

不清楚为什么你在这里使用 j ,并且 i 被初始化为其默认值 0,所以在现实中,你只是用正值填充数组的一个元素,所有其他元素都为零。

您需要重新考虑循环的构造方式。我强烈鼓励您不要将它们设为字段,而是将它们声明为循环构造的一部分。

关于java - 计算整数数组中每个元素的阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42909731/

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