第一讲 递归与循环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 5 int 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 8 int 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