美文网首页
递归算法

递归算法

作者: 朱宏飞 | 来源:发表于2019-06-28 10:07 被阅读0次

递归由两部分组成,一部分是函数的描述,另一部分是函数终结的端口。(先看,后面会一下子感悟)

一个小栗子:计算1-100的相加之和。

分析下:我们来找函数描述:1+2+3+4······+n

我们再来找结束口 n=1;

#include <iostream>

using namespace std;

int JC(int n);

int main(){

cout<<JC(100);

return 0;

}

int JC(int n){

int sum=0;

if(n==1){

return 1;//递归的出口

}

else

return JC(n-1)+n;//公式抽象::f(n)=f(n-1)+n

}

求数组的前n项和。 把一个数组看成两部分,比较两部分大小。然后寻找递归出口。最后肯定就是一位数

#include <iostream>

using namespace std;

int sum(int*a,int n);

int main(){

    int a[]={1,2,3,8,7,6,2};

cout<<sum(a,6);

return 0;

}

int sum(int*a,int n){

if(n==0){

return a[0];//递归的出口,如果本身就一个则其本身就是最大值。

}

else

return sum(a,n-1)+a[n];

}

递归实现选出数组最大值。

#include <iostream>

using namespace std;

int max(int*a,int n);

int main(){

    int a[]={1,2,3,8,7,6,2};

cout<<max(a,6);

return 0;

}

int max(int*a,int n){

if(n==0){

return a[0];//递归的出口

}

else if(max(a,n-1)>a[n])

  return max(a,n-1);

else

    return a[n];

}

最后点下笔,理解递归,首先需要理解函数的嵌套调用,也就是理解一个函数调用另外一个函数的时候,系统做了什么。确切的说,运行栈的机制。

向一个玻璃杯里放乒乓球,放入1号再放入2号再放入3号,然后取出的顺序则为3,2,1,这种先进后出的数据结构即为栈。那递归与栈又又什么关系呢?其实递归函数就是在调用栈!

相关文章

  • 快速幂模板

    递归算法 非递归算法

  • python递归算法、尾递归算法及优化

    文章概述 递归算法和尾递归概述递归算法的优化 递归算法 介绍:递归算法是计算机编程领域非常重要的一种算法,采用分而...

  • C++ 递归算法

    递归算法,尾递归算法求阶乘!

  • Java递归算法详解

    递归算法是一种直接或者间接调用自身函数或者方法的算法。Java递归算法是基于Java语言实现的递归算法。递归算法的...

  • 矩阵链乘法

    递归算法: 迭代算法: 分析 递归算法:规模为n的问题,有n个递归,每个递归又有相应矩阵个数个递归,故T(n)=T...

  • 【Python】(十一)从汉诺塔看Python中的递归问题

    递归的原则 递归算法必须具有基本情况。 递归算法必须改变其状态并向基本情况靠近。 递归算法必须以递归方式调用自身 ...

  • 一、算法

    目标 递归算法查找算法算法分析十大排序算法 递归算法 什么是递归递归,在数学与计算机科学中,是指在函数的定义中使用...

  • 欧几里得算法

    非递归算法 默认输入 m>=n 递归算法

  • 递归、回溯、分治

    递归 (1)子集 方式一:递归算法 方式二:位运算算法 (2)子集II 方法一:递归算法 方法二:位运算 (3)组...

  • 二叉树三种遍历的实现(递归)

    前序递归遍历算法:访问根结点-->递归遍历根结点的左子树-->递归遍历根结点的右子树 中序递归遍历算法:递归遍历根...

网友评论

      本文标题:递归算法

      本文链接:https://www.haomeiwen.com/subject/miidcctx.html