c/c++语言开发共享C中的递归不返回字符串值

我正在学习C并且这样做我决定写一个数独求解器。 我无法使用solve函数返回已解决的板,我的想法是问题是递归函数调用。

我将板作为字符串传递,找到板中第一个“0”的索引,并使用该索引构建该位置的可能值列表。 然后我迭代可能性,复制原始板,并用可能性替换零,然后递归地将新板传递给solve函数。 代码如下:

char *solve(char *board) { int zero = strcspn(board, "0"); if(zero > 80) { return board; } else { char *possibilities = getPossibilities(zero, board); if(possibilities != '') { 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); } } } } 

理想情况下,当字符串不再具有任何“0”时,函数应该返回。 但是我得到一些奇怪的输出,看起来像:

 The string is  96245781100060004504810390007950043030080000405023018010630059059070830003590007 

我无法盯着这个问题。 该计划的全部要点在这里 。 我会喜欢任何输入。 先感谢您!

    char *new_string = malloc(strlen(board) * sizeof(char));

    你需要为’ 0’终止字符分配,并将其更改为

    char *new_string = malloc(strlen(board) + 1);

    并将memcpy更改为strcpy

    char * strcpy (new_string, board);

      以上就是c/c++开发分享C中的递归不返回字符串值相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/519517.html

      (0)
      上一篇 2020年12月5日
      下一篇 2020年12月5日

      精彩推荐