我试图实现以下使用recurssion但我得到segfault请纠正我?
我尝试使用集合{1,,3,5,7}的排列解决问题,但未能输出所需的结果打印奇数部分中的数字的所有组成,即对于n = 8:7 + 1
5 + 3
5 + 1 + 1 + 1
3 + 3 + 1 + 1
3 + 1 + 1 + 1 + 1 + 1
1 + 1 + 1 + 1 + 1 + 1 + 1 + 1
sumto8(a,start,sum1)是://选择关注元素sumto8(a,start,sum)是://选择关注元素
#include #include int sumto8(int*,int,int); int n=4; int c=8; int main() { int a[]={1,3,5,7}; sumto8(a,0,c); } int sumto8(int* a,int start,int sum) { if((sum(n-1))) return -1; if(sum==0) { cout<
似乎sum <0的if条件没有正确检查……
output :segfault
你说
似乎sum <0的if条件没有正确检查……
我发现你的检查是这样的
if((sum<0) && (start>(n-1))) return -1;
如果“和”你把它改成“或”
if((sum<0) || (start>(n-1))) return -1;
我发现main中的嵌套for循环存在一个问题。 它应该读取for(int j=0; j。 你将它作为j,它将超出你声明它的数组范围
编辑:此部分还有另一个问题:
/*dp[start][sum1]=*/sumto8(a,start,sum1);//choosing element of concern start++; /*dp[start][sum]*/=sumto8(a,start,sum);
在第二次调用sumto8你没有注释掉= 。 你有很多空白和注释代码。 你也永远不会像现在所有注释的那样调用isVisited()函数,并且在sumto8函数的末尾你最后有两个相同的return语句。 如果你把它清理一下,如果你自己和这里的每个人都会有所帮助。
以上就是c/c++开发分享错过了使用递归查找总和的逻辑,得到了段错误相关内容,想了解更多
”
本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。
如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/546021.html
本文探讨了一段C++代码,该代码旨在实现奇数数组的排列和计算,但在运行时遇到段错误。问题在于sum变量的负数检查以及主函数中的for循环。解决方案包括修正if条件,更新for循环,并清理不必要的代码。修复后的代码将避免segfault并正确执行递归任务。

被折叠的 条评论
为什么被折叠?



