[问题] 程式新手,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