首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >KornShell用于从包含n个对象的集合中生成k个对象的组合数量

KornShell用于从包含n个对象的集合中生成k个对象的组合数量
EN

Stack Overflow用户
提问于 2014-01-09 13:45:15
回答 1查看 83关注 0票数 1

有没有人可以帮助我们使用KornShell (ksh)从一个具有n个对象的集合中生成k个对象的组合数量是n C k的代码?例如,一次获取k=2的{1,2,3,4}的组合是{1,2},{1,3},{1,4},{2,3},{2,4},{3,4},总共6= 4/ (2)(4-2)子集。

EN

回答 1

Stack Overflow用户

发布于 2014-01-09 23:01:29

@Ned Nowotny是对的,sh不是做这件事的合适地方

也就是说,下面是递归形式:

代码语言:javascript
复制
> function cr { integer n=$1 k=$2; if ((k==1)); then print $n; elif ((k==n)); then print 1; else print $(($(cr $((n-1)) $((k-1))) + $(($(cr $((n-1)) $k))))); fi; }
> cr 4 2
6
> 

下面是更快的阶乘形式:

代码语言:javascript
复制
> function fact { integer x=$1 f=1; while ((x>0)) do : $((f*=x--)); done; print $f; }
> function cf { integer n=$1 k=$2; print $(($(fact $n)/($(fact $k)*$(fact $(($n-$k)))))); }
> cf 4 2
6
> 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21012449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档