Evaluate binomial coefficients: Difference between revisions

Content added Content deleted
(Add Plain English)
Line 1,381: Line 1,381:


=={{header|Kotlin}}==
=={{header|Kotlin}}==
<lang scala>// version 1.0.5-2
<lang scala>// version 2.0

fun factorial(n: Int) = when {
n < 0 -> throw IllegalArgumentException("negative numbers not allowed")
else -> {
var ans = 1L
for (i in 2..n) ans *= i
ans
}
}


fun binomial(n: Int, k: Int) = when {
fun binomial(n: Int, k: Int) = when {
Line 1,396: Line 1,387:
n == k -> 1L
n == k -> 1L
else -> {
else -> {
val kReduced = min(k, n - k) // minimize number of steps
var ans = 1L
for (i in n - k + 1..n) ans *= i
var result = 1L
ans / factorial(k)
var numerator = n
var denominator = 1
while (denominator <= kReduced)
result = result * numerator-- / denominator++
result
}
}
}
}