Ahm*_*zar 1 c recursion combinations truthtable
我想根据变量编号(数字)使用c递归地列出o和1的组合
我想要的输出是
000
001
010
011
100
101
110
111
Run Code Online (Sandbox Code Playgroud)
我已经尝试了许多算法,最后一个是:
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
Run Code Online (Sandbox Code Playgroud)
我认为它给了我答案但没有订购因为我不知道放在哪里\n;
需要你的帮助!
如果您确实只是在寻找1's和0's的组合,我建议您只计算数字并将它们列为二进制.
取0...7二进制数字并仅取最后3位(也许应用掩码),最后得到你指定的相同集合:
000
001
...
...
111
Run Code Online (Sandbox Code Playgroud)
对于n位组合,您需要这样做0..2^n - 1
基于这个答案,针对一个特定的3位 案例(感谢@ChrisLutz和@dirkgently)
#include <stdio.h>
int main(){
int numdigits = 3, j;
for(j=1; j<8; j++)
printbits(j);
}
void printbits(unsigned char v) {
int i;
for(i = 2; i >= 0; i--) putchar('0' + ((v >> i) & 1));
printf("\n");
}
Run Code Online (Sandbox Code Playgroud)
输出:
000
001
010
011
100
101
110
111
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2579 次 |
| 最近记录: |