...
| Code Block |
|---|
def factorial
factorial = { int n, BigIntegerdef accu = 1G ->
if (n < 2) return accu
factorial.trampoline(n - 1, n * accu)
}
factorial = factorial.trampoline()
assert factorial(1) == 1
assert factorial(3) == 1 * 2 * 3
assert factorial(1000) == 402387260... // plus another 2560 digits
|
...