递归程序无法计算总和

时间:2016-07-01 10:25:11

标签: c recursion

这是程序1,3,(2,4,6),5,7中的输入写入

,输出应为

1+3

1+ ( (2+4)+(2+6)+(4+6))

1+5

1+7

3+ ( (2+4)+(2+6)+(4+6))

3+5

3+7

( (2+4)+(2+6)+(4+6)) +5

( (2+4)+(2+6)+(4+6))+7

5+7

我正在练习递归

所以我写代码来计算(2,4,6)的总和

这是我的代码

#include<stdio.h>
 int recursion(int* array,int i,int j,int size,int sum){
        if(i < size-1){
               if(j < size ){
                    printf("%d\n",array[i]+array[j]);
                    sum = sum+array[i]+array[j];
                    j++;
                    recursion(array,i,j,size,sum);

               }
               else{
                     printf("\n");
                     i++;
                     j=i+1;
                     recursion(array,i,j,size,sum);
               }
        }       
        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,sum);
   printf("\n\n%d",c);
   return 0;
}

我总是得到总和6 (2+4)

的输出

我不知道它有什么问题?有人可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

当您从recursion()内部致电recursion()时,您没有对其结果做任何事情,因此您不会将内部计算添加到最终结果中。每次拨打recursion()时(main()除外),请执行以下操作:

sum = recursion(array,i,j,size,sum);