RosettaCodeData/Task/Evaluate-binomial-coefficients/Asymptote/evaluate-binomial-coefficients.asymptote
2025-06-11 20:16:52 -04:00

34 lines
640 B
Text

int factorial(int n) {
if (n < 1) return 1;
int product = 1;
for (int i = 2; i <= n; ++i) {
product = product * i;
}
return product;
}
int binomial(int n, int k) {
// Special cases
if (k == 0 || k == n) return 1;
if (k < 0 || k > n) return 0;
// For efficiency, we use the smallest value of k or (n-k)
if (k > n - k) k = n - k;
real product = 1;
for (int i = 1; i <= k; ++i) {
product = product * (n - k + i) / i;
}
return round(product);
}
for (int n = 0; n <= 14; ++n) {
for (int k = 0; k <= n; ++k) {
string num = format("%5d", binomial(n, k));
write(stdout, num);
}
write("");
}