浏览代码

Merge pull request #1159 from akiyamaneko/combination_enhanced

基于#1153 重新做了优化,剔除了缓存,直接计算即可
Golden Looly 5 年之前
父节点
当前提交
8c17979082
共有 1 个文件被更改,包括 4 次插入4 次删除
  1. 4 4
      hutool-core/src/main/java/cn/hutool/core/math/Combination.java

+ 4 - 4
hutool-core/src/main/java/cn/hutool/core/math/Combination.java

@@ -6,6 +6,7 @@ import java.util.Arrays;
 import java.util.List;
 
 import cn.hutool.core.util.NumberUtil;
+import cn.hutool.core.util.StrUtil;
 
 /**
  * 组合,即C(n, m)<br>
@@ -53,11 +54,10 @@ public class Combination implements Serializable {
 	 * @return 组合数
 	 */
 	public static long countAll(int n) {
-		long total = 0;
-		for (int i = 1; i <= n; i++) {
-			total += count(n, i);
+		if (n < 0 || n > 63) {
+			throw new IllegalArgumentException(StrUtil.format("countAll must have n >= 0 and n <= 63, but got n={}", n));
 		}
-		return total;
+		return n == 63 ? Long.MAX_VALUE : (1L << n) - 1;
 	}
 
 	/**