C中的递归不返回字符串值
我正在学习C语言,为此我决定写一个数独解算器。我很难让solve函数返回已解决的电路板,我认为问题在于递归函数调用 我将板作为字符串传入,找到板中第一个“0”的索引,并使用该索引为该位置构建可能值的列表。然后我迭代各种可能性,复制原始电路板,并用可能性替换零,然后递归地将新电路板传递给solve函数。代码如下:C中的递归不返回字符串值,c,recursion,C,Recursion,我正在学习C语言,为此我决定写一个数独解算器。我很难让solve函数返回已解决的电路板,我认为问题在于递归函数调用 我将板作为字符串传入,找到板中第一个“0”的索引,并使用该索引为该位置构建可能值的列表。然后我迭代各种可能性,复制原始电路板,并用可能性替换零,然后递归地将新电路板传递给solve函数。代码如下: char *solve(char *board) { int zero = strcspn(board, "0"); if(zero > 80) {
char *solve(char *board)
{
int zero = strcspn(board, "0");
if(zero > 80) {
return board;
} else {
char *possibilities = getPossibilities(zero, board);
if(possibilities != '\0') {
for(int i = 0; i < strlen(possibilities); i++) {
char *new_string = malloc(strlen(board) * sizeof(char));
memcpy(new_string, board, strlen(board));
new_string[zero] = possibilities[i];
return solve(new_string);
}
}
}
}
我看不清这个问题。该计划的全部要点如下所示。我会喜欢任何输入。提前谢谢你
char*new_string=malloc(strlen(board)*sizeof(char))代码>
您需要为“\0”终止字符分配,并将其更改为
char*new_string=malloc(strlen(board)+1)代码>
并将memcpy
更改为strcpy
char*strcpy(新字符串,板)代码>
The string is �96245781100060004504810390007950043030080000405023018010630059059070830003590007