一个简单的双层循环
int a[3]={2,4,6};
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)
sum=sum+a[i]+a[j];
这个会执行 a0+a1,a0+a2,a0+a3
然后加起来变成sum
sum会是24嘛!
我把它改写成recursive
int recursion(int* array,int i,int j,int size){
int sum = 0;
if(i < size-1){
if(j < size ){
sum = sum+array[i]+array[j];
j++;
recursion(array,i,j,size);
}
else{
printf("\n");
i++;
j=i+1;
recursion(array,i,j,size);
}
}
return sum;
}
int main(){
int i=0,j=i+1,sum=0;
int a[3]={2,4,6};
int c =recursion(a,i,j,3);
printf("\n\n%d",c);
return 0;
}
结果只会return 6 就是a1+a2后面两个却加总不起来
但我不知道错在哪?
recursive中改成
if(j < size ){
sum = sum+array[i]+array[j];
j++;
return sum+ recursion(array,i,j,size);
会得到怪异的值,请问我要如何改进
谢谢