gpt4 book ai didi

c - 打印括号对,得到段错误

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

我想在 C 中打印出 n-paris 括号的所有有效组合。主要是我给一个值 3。也就是说,我想打印出所有有效括号与 3 个左括号和 3 个右括号的组合。但是,我遇到了段错误,gdb 打印到 _printValidParentheses(str, leftCount--, rightCount, count++); 行。我想知道有人知道为什么我有错吗?谢谢。

void printString(char * str) {
while (*str) {
printf("%c", *str++);
}
printf("\n");
}

void _printValidParentheses(char str[], int leftCount, int rightCount, int count) {
if (leftCount < 0 || rightCount < 0) {
return;
}

if (leftCount == 0 && rightCount == 0) {
printString(str);
return;
} else {
if (leftCount > 0) {
str[count] = '(';
_printValidParentheses(str, leftCount--, rightCount, count++);
}

if (rightCount > leftCount) {
str[count] = ')';
_printValidParentheses(str, leftCount, rightCount--, count++);
}

}
}

void printValidParentheses(int n) {
char *str = malloc(sizeof(char) * n * 2);
_printValidParentheses(str, n, n, 0);
}

int main() {
printValidParentheses(3);
return 1;
}

最佳答案

您在这一行中递减/递增变量:

_printValidParentheses(str, leftCount--, rightCount, count++);

只有在你调用函数之后,你才会得到StackOverflow ,因为函数每次都使用相同的参数调用,并且递归地调用自身。

关于c - 打印括号对,得到段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8568698/

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