第一讲 递归与循环2
|
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;} |

=============注===============
部分叙述来自于蓝桥杯讲解视频。
本文来自博客园,作者:一支小白,转载请注明原文链接:https://www.cnblogs.com/startnow/p/5017800.html

浙公网安备 33010602011771号