我尝试使用递归来实现以下目标,但我遇到了段错误,请纠正我?
我尝试使用集合 {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) is://选择关注元素 sumto8(a,start,sum)is://选择关注元素
#include<iostream>
#include<stdio.h>
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<0) || (start>(n-1)))
return -1;
if(sum==0)
{
cout<<" "<<a[start];
return printf("+ %d",a[start]);
}
if(i==-1)
{
return-1;
}
if(j==-1)
{
return -1
}
else
{
int sum1=sum-a[start];
int i=sumto8(a,start,sum1);
int j=sumto8(a,start+1,sum);
}
return printf("+ %d",a[start]);
}
似乎 sum<0 的 if 条件没有正确检查...
output :segfault