Files
news.gitea.happylizard.me/bin/gems/facets-3.1.0/lib/standard/facets/math/factorial.rb
T
pizza2d1 4cee170d66
Gitea Actions Demo / Explore-Gitea-Actions (push) Failing after 9s
Add bin and edit workflow
2026-09-16 13:11:16 -06:00

38 lines
567 B
Ruby

module Math
# First 16 factorials.
FACTORIALS = [
1,
1,
2,
6,
24,
120,
720,
5_040,
40_320,
362_880,
3_628_800,
39_916_800,
479_001_600,
6_227_020_800,
87_178_291_200,
1_307_674_368_000
]
# 1 * 2 * ... * +n+, <code>nil</code> for negative numbers
def self.factorial(n)
n = Integer(n)
if n < 0
nil
elsif FACTORIALS.length > n
FACTORIALS[n]
else
h = FACTORIALS.last
(FACTORIALS.length .. n).each { |i| FACTORIALS.push h *= i }
h
end
end
end