Cはfoldを使って実装しています。答えが大きいので、初期値を1Lとします。ただし、この関数は第2引数が0だと正しい答えが出ません。
function fold($f, $init) {
begin { $x = $init }
process { $x = & $f $x $_ }
end { $x }
}
function C($n, $m) {
1..$m | fold { $args[0] * ($n - $args[1] + 1) / $args[1] } 1L
}
C 40 20