首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 計算 1! + 2! + ... + 20! 之和

     編輯:Java 相關知識

問題

求 S = 1! + 2! + 3! + ... + 20!。

遞推計算階乘


public class FactorialSum {
    public static void main(String[] args) {
        long sum = 0;
        long fact = 1;
        for (int i = 1; i <= 20; i++) {
            fact *= i;      // i! = (i-1)! * i
            sum += fact;
        }
        System.out.println("前20項階乘和: " + sum);
        // 20! = 2432902008176640000 超過 long 範圍,實際建議用 BigInteger
    }
}

BigInteger 任意精度版本


import java.math.BigInteger;

public class BigFactorialSum {
    public static void main(String[] args) {
        BigInteger sum = BigInteger.ZERO;
        BigInteger fact = BigInteger.ONE;
        for (int i = 1; i <= 20; i++) {
            fact = fact.multiply(BigInteger.valueOf(i));
            sum = sum.add(fact);
        }
        System.out.println(sum);
        // 2561327494111820313 (精確值)
    }
}

關鍵點

  • 單次循環同時更新階乘與累加,**避免重複計算**
  • 20! 超過 Long.MAX_VALUE (9.22e18),**必須使用 BigInteger** 獲得精確結果
  • 時間 O(n),空間 O(1) (不計結果大小)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved