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

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

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-

分布式ID生成器-雪花算法

1. 雪花算法(Snowflake)Twitter的Snowflake算法是在分布式系统中一种自增ID的算法,ID能够按照时间有序生成并且可以做

把算法关进法律的笼子

随着算法应用的场景拓展,算法技术的触角伸入数字化生活的每个角落:电商购物、信息知识浏览、金融信贷、绩效管理、AI辅助量刑、生物识别及监控安保都有

17个机器学习的常用算法

根据数据类型的不同,对一个问题的建模有不同的方式。在机器学习…的分类类别;如何选择一个最佳的值,这取决于数据。一般情况下,在分类时较大的值能够减小噪声的影响。但会使类别之间的界限变得模糊。一个较好的值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使近邻算法的准确性减小。…点。来源:图灵人工智能仅用于学术分享,版权属于原作者。- -

为什么要学习少儿编程?这些理由你无法拒绝

快速上手,机器人可以连接很多传感器,让机器人实现很多功能,机器人搭建+编程的学习方式更生动,在学习编程的同时也可以激发孩子的创新能力。在幼儿园接触过简单机器人搭建、编程的小朋友,小学-年级再接触机器人编程,一点儿都不费劲!然而之前毫无基础,等小学-年级才开