java求阶乘的代码

java
import java.util.Scanner; public class FactorialCalculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个正整数:"); int n = scanner.nextInt(); long factorial = calculateFactorial(n); System.out.println(n + "的阶乘是:" + factorial); scanner.close(); } public static long calculateFactorial(int n) { if (n < 0) { throw new IllegalArgumentException("输入必须是非负整数"); } if (n == 0 || n == 1) { return 1; } else { return n * calculateFactorial(n - 1); } } }

这个程序首先要求用户输入一个正整数,然后使用递归方法计算该整数的阶乘,并打印出结果。这个示例中使用了递归来计算阶乘,但对于大的输入值,可能会导致栈溢出。在实际应用中,你可能需要使用迭代或其他更高效的方法来计算阶乘。

如果你想使用迭代而不是递归来计算阶乘,可以使用

java
import java.util.Scanner; public class FactorialCalculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("请输入一个正整数:"); int n = scanner.nextInt(); long factorial = calculateFactorial(n); System.out.println(n + "的阶乘是:" + factorial); scanner.close(); } public static long calculateFactorial(int n) { if (n < 0) { throw new IllegalArgumentException("输入必须是非负整数"); } long factorial = 1; for (int i = 1; i <= n; i++) { factorial *= i; } return factorial; } }

这个版本使用了一个for循环来迭代计算阶乘,相对于递归方法,更适合处理大数值的情况,因为不会产生栈溢出的问题。

标签