gpt4 book ai didi

c - 使用递归打印所有长度为 N 的二进制字符串(在 c 中)

转载 作者:太空宇宙 更新时间:2023-11-04 04:13:18 27 4
gpt4 key购买 nike

我需要打印所有长度为 N 的二进制字符串,从 0 到可以表示的最大数字。我下面的代码适用于生成所有字符串。我遇到的问题是字符串不是按从小到大的顺序排列的。

#define MAX_LENGTH 10

char binarystrings[MAX_LENGTH];

void binary(int n) {
if (n == 0) {
printf("%s\n", binarystrings);
} else {
binarystrings[n-1] = '0';
binary(n-1);
binarystrings[n-1] = '1';
binary(n-1);
}
}

int main() {
int length;
scanf("%d", &length);
binary(length);
}

当我的程序接受 3 时,它会生成:

000
100
010
110
001
101
011
111

但我需要它来生成:

000
001
010
011
100
101
110
111

我应该如何让我的程序按正确的顺序排列数字?

最佳答案

您正在从右到左填充 binarystring。而是从左到右填充。为此,您需要将两个参数(例如位置和长度)传递给 binary:

void binary(int index, int length)
{
if (index == length)
return;
binarystring[index] = 0;
binary(index + 1, length);
binarystring[index] = 1;
binary(index + 1, length);
}

并将其称为 binary(0, length).

关于c - 使用递归打印所有长度为 N 的二进制字符串(在 c 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54844246/

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