|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
/** @Author: SHUAI* @Date: 2015-12-03 17:13:08*//* 求数组的元素和(数组的属性:数组名,长度)
1.区间[ a[begin]...a[end] )
2.折半求和【 a[begin], a[mid] ) + 【 a[mid], a[end] 】
*/#include <stdio.h>#define N 5int fun(int a[], int length, int begin, int end) {
int sum;
if (begin == end || begin == length) return 0;
sum = fun(a, length, begin + 1, end);
return sum + a[begin];
}int main(void) {
int a[N] = {1, 2, 3, 4, 5};
printf("%d\n", fun(a, N, 0, 4));//第0到第三个之和
return 0;
} |
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
#include <stdio.h>
#define N 8int fun(int a[], int begin, int end) {
//只写了主要算法,没做越界判断什么的。
if (begin == end) return a[begin];
if (end - begin == 1) return a[begin] + a[end];
return fun(a, begin, (begin + end) / 2 - 1) + fun(a, (begin + end) / 2, end);
}//[begin, mid) [mid, end)int main(void) {
int a[N] = {1, 2, 3, 4, 5, 6, 7, 8};
printf("%d\n", fun(a, 0, 5));
return 0;
} |
=============注===============
部分叙述来自于蓝桥杯讲解视频。