java从键盘输入一个非负整数n(0<=n<=10000),求n的阶乘。本题只能采用数组完成,不允许使用BigInteger等大数类。
时间: 2024-12-12 07:16:40 浏览: 6
在Java中,计算一个非负整数n的阶乘可以使用循环和数组来避免直接处理大数带来的溢出问题。首先,创建一个长度为n+1的数组,用于存储中间结果和最终的阶乘值。然后,从0开始遍历数组,对于每个i(从1到n),将当前元素与前一个元素相乘并将结果存入对应位置。最后,数组的第一个元素就是n的阶乘。
以下是具体的步骤和代码示例:
1. 定义一个大小为n+1的数组`factorial`,初始化所有元素为1,因为任何数的0次方都是1。
2. 使用for循环,从1遍历到n:
- `factorial[i] = factorial[i-1] * i;`
3. 阶乘的结果就保存在`factorial[n]`中。
```java
public static void main(String[] args) {
int n = readInputFromKeyboard(); // 读取用户输入
if (n < 0 || n > 10000) {
System.out.println("输入错误,n应为0到10000之间的非负整数");
return;
}
// 初始化阶乘数组
int[] factorial = new int[n + 1];
for (int i = 1; i <= n; i++) {
factorial[i] = factorial[i - 1] * i;
}
System.out.println("n的阶乘是:" + factorial[n]);
}
private static int readInputFromKeyboard() {
Scanner scanner = new Scanner(System.in);
return scanner.nextInt();
}
```
阅读全文