php 递归函数 segfault,c/c++开发分享错过了使用递归查找总和的逻辑,得到了段错误...

本文探讨了一段C++代码,该代码旨在实现奇数数组的排列和计算,但在运行时遇到段错误。问题在于sum变量的负数检查以及主函数中的for循环。解决方案包括修正if条件,更新for循环,并清理不必要的代码。修复后的代码将避免segfault并正确执行递归任务。

我试图实现以下使用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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值