算法|单递归(减而治之)或双递归(分而治之)给数组求和

迭代乃人工,递归方神勇。

To iterate is human, to recurse, divine.

(神通的原因在于编译器在背后利用函数栈帧的数据结构。)

凡治众如治寡,分数是也。

The control of a large force is the same principle as the control of a few men: it is merely a question of dividing up their numbers.

分数,可以减而治之(Decrease and conquer),也可以分而治之(Divide and conquer)。

1 减而治之

文章图片1

demo:

#include int Sum(int arr[],int size){    if(size<1)        return 0;    return arr[size-1]+Sum(arr,size-1);          // 单递归,线性递归}int main(){    int arr[] = {1,2,3,4,5};    int n = sizeof arr / sizeof *arr;    printf("%d\n",Sum(arr,n-1));    getchar();}

线性递归:

文章图片2

2 分而治之

文章图片3

demo:

#include int Sum(int arr[],int lo,int hi){    if(lo==hi)        return arr[lo];    int mid = (lo+hi)>>1;    return Sum(arr,lo,mid)+Sum(arr,mid+1,hi); // 双递归,二叉树形式递归}int main(){    int arr[] = {1,2,3,4,5};    int n = sizeof arr / sizeof *arr;    printf("%d\n",Sum(arr,0,n-1));    getchar();}

二叉树形式递归:

文章图片4

-End-

CSS实现拖拽功能,你是认真的吗?

我是小渔歌,点击右上方“关注”,每天为你分享【前端技术知识】干货。大家看下这个gif动态图上的拖拽效果,用CSS可以实现吗?这个时完全可以用CS

使用Docker+Jenkins+Gitlab+MySQL+Nginx自建一套devops系统

文章简介文本主要的内容是,利用Jenkins+Gitlab+Nginx+MySQL+Docker搭建一套公企业级的自动化系统。整个系统的流程图如

Web前端:2022年最好的JavaScript框架是什么?

它用于创建 Web 应用程序和 REST API,它速度快,也是一个轻量级且可扩展的 Node.js Web 应用程序框架,提供了用于创建 We

普教智慧校园应包含哪些系统?

一. 信息数据中心平台(一)物联网管控中心(二)校园安全中心(三)信息广播中心(四)师生服务中心(五)资源中心(六)教学应用中心(七)远程教学中心(八)教育管理中心(九)校园大数据中心(十)远程巡考监管二.

理解JavaScript中的数据结构(链表)

对于 JS 初学者,理解链表可能是一项比较困难的任务,因为 JS 没有提供内置的链表。在像 JS 这样的高级语言中,我们需要从头开始实现此数据结构,如果你不熟悉此数据结构的工作方式,则实现部分会变得更加困难 ?。