这是程序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)
我不知道它有什么问题?有人可以帮助我吗?
答案 0 :(得分:0)
当您从recursion()
内部致电recursion()
时,您没有对其结果做任何事情,因此您不会将内部计算添加到最终结果中。每次拨打recursion()
时(main()
除外),请执行以下操作:
sum = recursion(array,i,j,size,sum);