使用 for 循环的 Java 阶乘代码未显示准确的输出

标签 java factorial

我的代码没有显示使用 for 循环生成数字阶乘的确切输出。它将所有数字的所有值显示为 0。

public class Factorial {
public static void main(String[] args) {
    int NUM_FACTS = 100;
    for(int i=1;i<=NUM_FACTS;i++) {
        System.out.println("Factorial of "+i+" is "+ `enter code here`factorial(i));
    }
}
//getting factorial of a particular number
public static int factorial(int n) {
    int result = 1;
    for(int i=2; i<n; i++)
        result *= i;
    return result;
}
}

最佳答案

您的代码至少可以运行到一定数量的i。在这里您可以看到其输出的一部分。

Factorial of 1 is 1
Factorial of 2 is 1
Factorial of 3 is 2
Factorial of 4 is 6
...
Factorial of 15 is 1278945280
Factorial of 16 is 2004310016
Factorial of 17 is 2004189184
Factorial of 18 is -288522240
Factorial of 19 is -898433024
Factorial of 20 is 109641728

从输出中可以看出,符号从正变为负。这是因为 int 的范围有限 - 您会看到溢出。更改为 long 不会有帮助,因为它的范围也不够。考虑使用 BigInteger。

关于使用 for 循环的 Java 阶乘代码未显示准确的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54160317/

相关文章:

java - 我可以在 Java 中获取调用对象的实例吗?

java - 访问修饰符和隐藏 Java 字段

java - 部署一个基于 Spring 的 WAR,其 JAR 依赖项已外部化

c - 错误消息 "format ‘%ld’ 需要类型为 ‘long int’ 的参数,但参数 2 的类型为 ‘int’“

prolog - 如何在所有参数模式的后继算术中实现阶乘序列?

php - 具有意外输出的其他循环

java - 迭代和比较大数据集

java - 在 Java 中读取可能被另一个进程修改的文件

c# - 多线程并行阶乘

c - 在大多数情况下,递归函数使用的内存是否是 C 中迭代函数的两倍?