gpt4 book ai didi

C : 0 & 1 combinations using recursion

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:54 25 4
gpt4 key购买 nike

我想根据变量数(number)使用 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;

需要你的帮助!

最佳答案

如果您确实只是在寻找 10 的组合,我建议您只是数一数并以二进制形式列出它们。

采用二进制形式的数字 0...7 并仅采用最后 3 位(可能应用掩码),最终得到与指定相同的集合:

000
001
...
...
111

对于 n 位 组合,您需要执行 0..2^n - 1


基于 this answer ,对于 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");
}

输出:

000
001
010
011
100
101
110
111

关于C : 0 & 1 combinations using recursion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13351365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com