阶乘 Java 程序

新手上路,请多包涵

我想使用 for 循环在 java 中执行一个阶乘程序。例如,我想接受用户输入,假设 10 ,然后乘以 10*9*8*7*6*5*4*3*2*1 。我需要帮助构建 for 循环。到目前为止,下面的代码是我所拥有的,因为我不确定该去哪里。

 import java.util.Scanner;
import java.lang.Math;
public class factorial {

    public static void main(String[] args) {
        int num;
        Scanner input = new Scanner(System.in);
        System.out.println("Enter a number: ");
        num = input.nextInt();
    }
}

原文由 Eqorip 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 506
2 个回答

尝试

public static void main(String[] args) {
    int num;
    int fact=1;
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number: ");
    num = input.nextInt();
    for (int i=2;i<=num; i++){
        fact=fact*i;
    }

    System.out.println("Factorial: "+fact);
}

正如@Marko Topolnik 在评论中提到的,此代码适用于最多 12 个输入。对于更大的输入,由于溢出将输出无穷大。

对于大于 12 的数字,您应该使用更高的数据类型,例如 BigInteger

你可以试试:

 public static void main(String[] args) {
    BigInteger num;
    BigInteger fact = BigInteger.valueOf(1);
    Scanner input = new Scanner(System.in);
    System.out.println("Enter a number: ");
    num = input.nextBigInteger();
    for (int i = 2; i <= num; i++){
        fact = fact.multiply(BigInteger.valueOf(i));
    }
    System.out.println(fact);
}

原文由 laaposto 发布,翻译遵循 CC BY-SA 3.0 许可协议

通过递归函数编码:

 import java.util.Scanner;

public class Main {

     public static void main(String[] args)
     {
         System.out.print("Enter a number: ");
         Scanner input = new Scanner(System.in);
         int num = input.nextInt();
         long factorialResult = factorialRecursive(num);
         System.out.println(factorialResult);
     }

     public static long factorialRecursive(int n) {
         if (n == 0 || n == 1 )
             return 1;

         return n * factorialRecursive(n - 1);
     }
}

资料来源: learn.uncox.com

如果数字很大,就会发生“stackoverflow”。

原文由 gadolf 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题