【发布时间】:2012-11-01 07:52:49
【问题描述】:
我想根据变量编号(数字)使用 c 递归地列出 o 和 1 的组合
我想要的输出是
000
001
010
011
100
101
110
111
我尝试了很多算法,最后一个是:
void permute(unsigned number) {
if(number == 0) {
printf("\n");
return;
}
permute(number - 1);
printf("0");
permute(number - 1);
printf("1");
} //permute ends here
void permuteN(unsigned number) {
unsigned i;
for(i = 0; i < number + 1; i++){
permute(i);
}
} //permuteN ends here
我认为它给了我答案但没有排序,因为我不知道该放在哪里\n;
需要你的帮助!
【问题讨论】:
-
这些不是排列,这些是组合。
-
@MatteoItalia 不,根据维基百科和我的记忆,当订单不重要时,您需要组合。在这种情况下,明确的顺序很重要(
001与010或100不同) -
@madth3 排列是您对集合中的值重新排序的地方。组合是您在集合中获取任何值的地方。如果您置换
001,则唯一的选项是001、010和100。 -
@paddy 我没有说这些是排列,我只是指出它们也不是组合:en.wikipedia.org/wiki/Combination。在某些圈子里,我看到这些被称为“重复排列”,但那是另一回事了。
标签: c recursion combinations truthtable