计算整数数组中每个元素的阶乘
Calculating the factorial of every element in an integer array
我需要创建一个在 Java 中有 2 个参数的方法,upperborder 和 lowerborder。此方法必须创建一个从数字 2 到数字 10 的数组。
然后我必须实现另一种方法,计算给定数字的阶乘。
然后我必须实现第三种方法,计算创建数组中每个元素的阶乘,并在 TestClass 中测试所有这些方法。
我知道如何做到这一点,但显然我在我的代码中犯了某种错误,它给了我 Whosebug 异常。我读了几次代码,但我似乎不太明白我哪里错了。
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);
}
}
}
if(n == 1){
的条件不足以阻止递归:n
可以低于 1。在您的特定情况下,您遇到 n
为 0 的情况。
在任何情况下都考虑将递归展开为一个简单的循环。根据经验,递归不适用于 O(N) 的东西。
你得到 WhosebugError
s 的原因是你的递归方法没有 n == 0
.
的情况
原因您的值以 0
的形式出现是由于您构建循环的方式。
for(this.j = 1; j <= a.length; j++){
a[i] = j + 1;
System.out.println(a[i]);
}
不清楚你为什么在这里使用 j
,并且 i
被初始化为默认值 0,所以在所有现实中,你只会填充 数组中的一个 元素具有正值,所有其他元素都为零。
你需要重新考虑你的循环是如何构建的。我会强烈鼓励您不要将它们设为字段,而是将它们声明为循环构造的一部分。
我需要创建一个在 Java 中有 2 个参数的方法,upperborder 和 lowerborder。此方法必须创建一个从数字 2 到数字 10 的数组。
然后我必须实现另一种方法,计算给定数字的阶乘。
然后我必须实现第三种方法,计算创建数组中每个元素的阶乘,并在 TestClass 中测试所有这些方法。
我知道如何做到这一点,但显然我在我的代码中犯了某种错误,它给了我 Whosebug 异常。我读了几次代码,但我似乎不太明白我哪里错了。
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);
}
}
}
if(n == 1){
的条件不足以阻止递归:n
可以低于 1。在您的特定情况下,您遇到 n
为 0 的情况。
在任何情况下都考虑将递归展开为一个简单的循环。根据经验,递归不适用于 O(N) 的东西。
你得到 WhosebugError
s 的原因是你的递归方法没有 n == 0
.
原因您的值以 0
的形式出现是由于您构建循环的方式。
for(this.j = 1; j <= a.length; j++){
a[i] = j + 1;
System.out.println(a[i]);
}
不清楚你为什么在这里使用 j
,并且 i
被初始化为默认值 0,所以在所有现实中,你只会填充 数组中的一个 元素具有正值,所有其他元素都为零。
你需要重新考虑你的循环是如何构建的。我会强烈鼓励您不要将它们设为字段,而是将它们声明为循环构造的一部分。