我做了一个递归方法来计算阶乘,但在主方法中我使用了for循环来计算阶乘列表。有没有办法在主方法中不使用循环来计算阶乘列表?
代码:
public class FactInt {
public static void main(String[] args) {
for (int n = 1; n < 11; n++)
System.out.println(factorial(n));
}
//Calculates the factorial of integer n
public static int factorial(int n) {
if (n == 0)
return 1;
else
return n*factorial(n-1);
}
}
答案 0 :(得分:6)
这取决于“计算一个列表”的确切含义,但这会打印相同的内容:
public static void main(String[] args) {
factorial(10);
}
//Calculates the factorial of integer n
public static int factorial(int n) {
if (n == 0)
return 1;
else {
int newVal = n*factorial(n-1);
System.out.println(newVal);
return newVal;
}
}
答案 1 :(得分:0)
我不知道你为什么不想使用循环,但这里有几个想法:
自行展开循环。
System.out.println(factorial(1));
System.out.println(factorial(2));
// ...
System.out.println(factorial(11));
制作另一个递归方法并从main
调用它。
public static void factorials(int n)
{
if (n >= 11) return;
System.out.println(factorial(n));
factorials(n + 1);
}
答案 2 :(得分:0)
实际上我想说你不能或更喜欢为什么会这样,但如果你真的想要,你可以这样做。
public class FactInt {
public static void main(String[] args) {
factorial(10);
}
//Calculates the factorial of integer n
public static int factorial(int n) {
final int calc;
if (n == 0) { calc = 1; }
else { calc = n * factorial(n - 1); }
System.out.println(calc);
return calc;
}
}
答案 3 :(得分:0)
创建一个方法,例如getFactorial(int num),如下所示。在该方法中移动for循环并从main调用该方法。
public static void main(String[] args) {
int num = 11;
getFactorial(num);
}
public static void getFactorial(int num){
for (int n = 1; n < num; n++)
System.out.println(factorial(n));
}
//Calculates the factorial of integer n
public static int factorial(int n) {
if (n == 0)
return 1;
else
return n*factorial(n-1);
}
答案 4 :(得分:0)
再次使用递归!
public class FactInt {
public static void main(String[] args) {
factorialList(1, 10);
}
//Calculates the factorial of integer n
public static int factorial(int n) {
if (n == 0)
return 1;
else
return n*factorial(n-1);
}
public static void factorialList(int min, int max) {
if (min != max)
factorialList(min, max-1);
System.out.println(factorial(max));
}
}