Special factorials: Difference between revisions
→{{header|Wren}}: More efficient.
m (→{{header|REXX}}: eliminated the need for abutment.) |
(→{{header|Wren}}: More efficient.) |
||
Line 247:
<lang ecmascript>import "/big" for BigInt
import "/fmt" for Fmt
if (n < 2) return BigInt.one▼
var fact = BigInt.one▼
for (i in 2..n) fact = fact * i▼
var sf = Fn.new { |n|
if (n < 2) return BigInt.one
var sfact = BigInt.one
for (i in 2..n) {
sfact = sfact * fact
}
return sfact
}
Line 272 ⟶ 269:
if (n < 1) return BigInt.zero
var afact = BigInt.zero
var sign = (n%2 == 0) ? -1 : 1
for (i in 1..n) {
afact = afact + fact * sign
sign = -sign
}
Line 288 ⟶ 287:
var rf = Fn.new { |n|
var i = 0
▲ var fact = BigInt.one
while (true) {
var fact = f.call(i)▼
if (fact == n) return i
if (fact > n) return "none"
i = i + 1
}
}
|