• 递归 尾递归 迭代 递推 的比较--算法课第一次作业


    算法课第一次作业:递归 尾递归 迭代 递推 的比较

     

    定义

    优点

    缺点

    demo

    递归

    程序调用自身的编程技巧称为递归

    1)大问题化为小问题,可以极大的减少代码量;

    2)用有限的语句来定义对象的无限集合.;

    3)代码更简洁清晰,可读性更好

    1)递归调用函数,浪费空间;

    2)递归太深容易造成堆栈的溢出

    上面的汉诺塔

    】】】

    】】】】】】

    ...

    】】】】】】】】】

    】】】】】】】】】】】

    】】】】】】】】】

    ...

    】】】】】】

    】】】

    迭代

    利用变量的原值推算出变量的一个新值,迭代就是A不停的调用B.

    1)迭代效率高,运行时间只因循环次数增加而增加;

    2)没什么额外开销,空间上也没有什么增加,

    1) 不容易理解;

    2) 代码不如递归简洁;

    3) 编写复杂问题时困难。

    】】】

    】】】

    】】】

    】】】

    ...

    】】】

    递推

    递推算法是一种简单的算法,即通过已知条件,利用特定关系得出中间推论,直至得到结果的算法

    递推算法免除了数据进出栈的过程,不需要函数不断的向边界值靠拢,而直接从边界出发,直到求出函数值. 

    递推的精髓在于f(n)的结果一般由f(n-1)、f(n-2)…..f(n-k)的前k次结果推导出来

    不容易从简单而特殊的案例,找到问题的一般规律,写出f(n)与f(n-1)、f(n-2)…..f(n-k)之间的关系表达式,从而得出求解的结果

    课本陈惠南算法书第26页

    尾递归

    递归函数return语句是自身的函数

    类似迭代: 占据恒量的内存

    同上迭代

    function story() {

    从前有座山,山上有座庙,

    庙里有个老和尚,

    一天和尚对小和尚讲故事:story()

    }

        

  • 相关阅读:
    特殊方法(双下方法)
    反射
    属性
    类方法、静态方法
    封装
    python接口类,抽象类
    Yii2基本概念之——事件(Event)
    Yii2基本概念之——行为(Behavior)
    yii2 migrate 数据库迁移的简单分享
    Yii2.0 RESTful API 之速率限制
  • 原文地址:https://www.cnblogs.com/liguo-wang/p/8757918.html
Copyright © 2020-2023  润新知