递归算法

作者: wy22 | 来源:发表于2021-11-24 08:56 被阅读0次

什么是递归方法:就是一个方法,自己调用自己

递归我的理解就是

方法或函数调用自己就称为递归

1.分解为:直接量+小规模问题

2.分级为:小规模问题

要想计算f(10),就需要知道f(9),算f(9)需要计算f(8)

特点:

1.自身调用自身

2.避免死循环

方法:

1.找重复(找更小规模的子问题(和原问题具有相同的形式);求n的阶乘,先求n-1的阶乘。。。。)

2.找变化(哪些东西在变化,求n的阶乘,先求n-1的阶乘,。。。。将变化的量作为参数)

3.找边界(循环终止的条件,出口的判断,求n的阶乘,一直递归变为求1的阶乘,到1的时候,1的阶乘为1,返回)

求数组的和

1.找重复,将arr化为小的规模,将第一个划分出来,剩下的交给递归一直这样重复

2.找变化,数组的长度在变化,起点的不断变化,数组的区间在缩小,终点不变

3.找边界,就为数组的长度

 // 经典面试题:使用递归算法1-20之间所有数之和

        function calc(num){

            //这个if是退出递归的条件

            if(num===1) {

                return num

            }

            return num + calc(num-1)

        }

        console.log(calc(20));

计算sum(5)时,先sum(5)入栈,然后原问题sum(5)拆分为子问题sum(4),再入栈,直到终止条件sum(n=1)=1,就开始出栈。sum(1)出栈后,sum(2)开始出栈,接着sum(3)。最后呢,sum(1)就是后进先出,sum(5)是先进后出,因此递归过程可以理解为栈出入过程啦~

相关文章

  • 快速幂模板

    递归算法 非递归算法

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

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

  • C++ 递归算法

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

  • Java递归算法详解

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

  • 矩阵链乘法

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

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

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

  • 一、算法

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

  • 欧几里得算法

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

  • 递归、回溯、分治

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

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

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

网友评论

    本文标题:递归算法

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