首页 > 其他 > 详细

第一讲 递归与循环2

时间:2015-12-03 23:22:15      阅读:476      评论:0      收藏:0      [点我收藏+]
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));//第一到第三个之和
  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;
}

技术分享

第一讲 递归与循环2

原文:http://www.cnblogs.com/startnow/p/5017800.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!