一個簡單的雙層迴圈
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);
會得到怪異的值,請問我要如何改進
謝謝