[問題] 程式新手,for迴圈改recursion

作者: pilistar5566 (霹靂之星5566)   2016-07-02 12:23:29
一個簡單的雙層迴圈
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);
會得到怪異的值,請問我要如何改進
謝謝
作者: tj386 (最愛歐陽三姊妹♥♥♥)   2016-07-02 13:21:00
recursion內改成static int sum = 0;還有你一開始講的雙層迴圈 a0+a1,a0+a2,a0+a3是錯的應該是a0+a1,a0+a2,a1+a2作業自己寫 看版規好嘛
作者: druid0214 (Assassin)   2016-07-02 13:24:00
或是把sum也當參數
作者: pilistar5566 (霹靂之星5566)   2016-07-02 15:31:00
嗯嗯,抱歉我有發現問題在哪了,謝版友,也請版主幫刪

Links booklink

Contact Us: admin [ a t ] ucptt.com