• 关于递归


    什么是递归?

    任何函数调用自己都叫做递归,不管是直接的还是间接的,递归方法通过调用自己来解决一个问题的一部分。这就叫递归步骤。递归步骤一般会引发一系列的递归(当然了这是废话,不然就不叫做递归了)。这里面有一个重要的点就是要确保你的递归函数有个终止条件(不然的话就出不来了)。每一次的递归都是解决原问题的一个小问题,并且这个小问题是原问题的一个副本(像套娃一样,一层比一层小但是除了代销其他方面都很相似),一系列的小问题解决后必须能解决最终要解决的问题(也是废话,想看到套娃里面的东西,你要一层一层的打开看,最终才能看到里面是什么)。

    为什么要用递归呢?

    递归是从数学中借用的方法。因为有些问题用递归写出来的代码比循环代码要短小,一般来说,循环代码在编以或是解释后都回变成递归结构。对于可分成一系列相似的子任务的任务,递归使用起来就很方便了。例如:排序,搜索,遍历等问题都有相应的递归解决方法。

    递归函数的格式

    递归函数通过调用自己来解决一个任务的子任务。到某个点,函数遇到的子任务它再不需要调用自己就能解决的时候(类似打开到最后一层),这一层叫做base case,相应的前面的都要调用自己的子任务也有名字,叫做recursive case。下面句式递归函数的一般形式:

    if( test for the base case )
        return some base case value;
    else if( test for another base case )
        return some other base case value;
    // the recursive case
    else
        return ( some work ) and then ( a recursive call )
  • 相关阅读:
    对象的深度复制和浅复制 (深度拷贝和浅拷贝)
    包容网关 Inclusive Gateway
    一文带你了解js数据储存及深复制(深拷贝)与浅复制(浅拷贝)
    撸一个简单的vue-router来剖析原理
    vue-组件化-插槽(slot)
    从0开始探究vue-组件化-组件之间传值
    从0开始探究vue-公共变量的管理
    从0开始探究vue-双向绑定原理
    【图机器学习】cs224w Lecture 16
    【图机器学习】cs224w Lecture 15
  • 原文地址:https://www.cnblogs.com/programnote/p/4713377.html
Copyright © 2020-2023  润新知