#include <stdio.h>
int f1(int *a, int begin, int end) //折半递归求和
{
int mid;
if(begin + 1 == end) // [begin, ..., mid) + [mid, ..., end)
return a[begin];
mid = (begin + end) / 2;
return f1(a, begin, mid) + f1(a, mid, end);
}
int f2(int *a, int begin, int lenth) //a[begin] + SUM(a[begin + 1], ...... a[结束])
{
if(begin == lenth)
return 0;
else
return a[begin] + f2(a, begin + 1, lenth);
}
int f3(int *a, int end) //SUM(a[0], ......, a[end - 1]) + a[end]
{
if(end == -1)
return 0;
else
return f3(a, end - 1) + a[end];
}
int main()
{
int a[100] = {0};
int n, i;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", a+i);
printf("%d\n", f1(a, 0, n)); //第一种结果
printf("%d\n", f2(a, 0, n)); //第二种结果
printf("%d\n", f3(a, n)); //第三种结果
return 0;
}