gpt4 book ai didi

C - 如何修复递归函数返回类型错误

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

我不确定为什么我的 solve_sudoku 函数会导致此错误:

error: void value not ignored as it ought to be

我的完整代码如下。请注意,我必须保留 void 作为返回类型。

感谢任何帮助。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

void print_sudoku(int sudoku[9][9]){
printf("The Sudoku contains:\n");
for (int j=0; j<9; j++)
{
for (int i=0; i<9;i++)
{
printf("%d ",sudoku[j][i]);
}
printf("\n");
}
}

int rowExists(int sudoku[9][9], int i, int num){
for (int j=0;j<9;j++){
if (sudoku[i][j]==num){
return 1;
}
}
return 0;
}

int colExists(int sudoku[9][9], int j, int num) {
for (int i=0;i<9;i++) {
if (sudoku[i][j]==num){
return 1;
}
}
return 0;
}

int valExists(int sudoku[9][9], int i, int j, int num) {
for (int r=0;r<3;r++){
for (int s=0;s<3;s++){
if (sudoku[r+i][s+j]==num){
return 1;
}
}
}
return 0;
}

int DNE(int sudoku[9][9], int *i, int *j) {
for (*i=0; *i<9; (*i)++){
for (*j=0;*j<9;(*j)++){
if (sudoku[*i][*j]==0){
return 1;
}
}
}
return 0;
}

void solve_sudoku(int sudoku[9][9], int depth){
int i=0;
int j=0;

if (!DNE(sudoku, &i, &j)){
return;
}

for (int k=1;k<=9;k++){
if (!rowExists(sudoku, i, k) && !colExists(sudoku, j, k) && !valExists(sudoku, i-(i%3), j-(j%3), k)){
sudoku[i][j]=k;
if (solve_sudoku(sudoku, depth)){
return;
}
sudoku[i][j]=0;
}
}
return;
}

#ifndef __testing
int main(){
int Sudoku[9][9]={{5, 3, 0, 0, 7, 0, 0, 0, 0},
{6, 0, 0, 1, 9, 5, 0, 0, 0},
{0, 9, 8, 0, 0, 0, 0, 6, 0},
{8, 0, 0, 0, 6, 0, 0, 0, 3},
{4, 0, 0, 8, 0, 3, 0, 0, 1},
{7, 0, 0, 0, 2, 0, 0, 0, 6},
{0, 6, 0, 0, 0, 0, 2, 8, 0},
{0, 0, 0, 4, 1, 9, 0, 0, 5},
{0, 0, 0, 0, 8, 0, 0, 7, 9}};

printf("Input puzzle is:\n");
print_sudoku(Sudoku);

solve_sudoku(Sudoku, 0);

printf("Solution is:\n");
print_sudoku(Sudoku);

}
#endif

最佳答案

solve_sudoku 函数中的以下行预计 solve_sudoku 函数将返回一个 bool 值,但该函数的返回类型为 void,因此产生了错误。

if (solve_sudoku(sudoku, depth))

您可以像下面这样更改函数的签名,并根据条件返回 true/false。

提示:传递多维数组时,您无需指定第一个维度。例如:int sudoku[][9],

bool solve_sudoku(int sudoku[][9], int depth)

关于C - 如何修复递归函数返回类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55447619/

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