1. 组合的矢量实现
nchoosek(n, k) 的第二个参数在 matlab 下是不支持矢量化的,必须是标量形式。但 matlab 下的 gamma 函数,却可支持,矢量形式,又因为,gamma 函数与 阶乘的关系:
gamma(n+1) == n!
因此:
>> nchoosekln = @(n, k) gammaln(n+1) - gammaln(k+1) - gammaln(n-k+1);
>> nchooseks = @(n, k) exp(nchoosekln(n, k));
>> nchooseks(5, 1:4)
ans =
5.0000 10.0000 10.0000 5.0000