我找不出我的代码中遗漏了什么。任何帮助都将不胜感激。我是编程新手,我只是在做一些练习。谢谢!
import java.util.Scanner;
import java.lang.Math;
public class Factorial {
public static Scanner sc;
public Factorial() {
}
int factorial(int n) {
for (int j = n - 1; j > 0; j--) {
int factorial = factorial(0) * j;
}
return factorial(0);
}
public static void main(String[] args) {
System.out.print("Enter a number to find its factorial: ");
sc = new Scanner(System.in);
int myNumber = sc.nextInt();
Factorial myFactorial = new Factorial();
System.out.println(myFactorial.factorial(myNumber));
}
}发布于 2019-02-24 12:52:34
您缺少边角大小写(对于0):
int factorial(int n) {
if (n == 0) return 1;
for (int j = n - 1; j > 0; j--) {
int factorial = factorial(0) * j;
}
return factorial(0);
}发布于 2019-02-24 13:04:06
在递归模式下:`
import java.util.Scanner;
import java.lang.Math;
class Factorial {
public static Scanner sc;
public static int factorial(int n) {
if(n==0)return 1;
return n*factorial(n-1);
}
public static void main(String[] args) {
System.out.print("Enter a number to find its factorial: ");
sc = new Scanner(System.in);
int myNumber = sc.nextInt();
//Factorial myFactorial = new Factorial();
System.out.println(factorial(myNumber));
}
}`发布于 2019-02-24 12:54:07
好吧..。不管您在n上提供了什么,您总是返回factorial(0),这最终导致对factorial的调用的无限循环,所以我猜您的堆栈正在遭受重创,并获得堆栈溢出错误,对吧?我认为这就是错误所在。
https://stackoverflow.com/questions/54848845
复制相似问题