zoukankan      html  css  js  c++  java
  • 对递归和迭代的认识

    递归:程序调用自身的编程技巧称为递归,就是函数重复的自己调用自己。在使用递归时,必须有一个明确的递归结束条件,称为递归出口.

    迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是A不停的调用B。

    递归的优点:

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

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

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

    迭代的优点:

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

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

    递归的缺点:

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

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

    迭代的缺点:

    1) 不容易理解;

    2) 代码不如递归简洁;

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

    二者的关系:

    1) 递归中一定有迭代,但是迭代中不一定有递归,大部分可以相互转换。

    2) 能用迭代的不用递归,递归调用函数,浪费空间,并且递归太深容易造成堆栈的溢出.

    递归的实例:折半查找法

    function sort(arr){
                if (arr.length<=1) {
                    return arr;
                }
                var pivotIndex=Math.floor(arr.length/2);
                var privot = arr.splice(pivotIndex,1)[0];
                var left = [];
                var right = [];
                
                for (var i=0;i<arr.length;i++) {
                    if (arr[i]<=privot) {
                        left.push(arr[i]);
                    } else{
                        right.push(arr[i]);
                    }
                }
                
                //递归
                return sort(left).concat([privot],sort(right));
     }

    迭代的实例:计算1-100所有实数的和

    var v=1;

    for(var i=100;i<=100;1--){

     v=v+i;

    }

  • 相关阅读:
    机器学习是什么
    Computer Vision的尴尬---by林达华
    机器学习算法与Python实践之(四)支持向量机(SVM)实现
    机器学习算法与Python实践之(三)支持向量机(SVM)进阶
    Hortonworks HDP Sandbox定制(配置)开机启动服务(组件)
    GCC单独编译host/examples/ tx_waveforms.cpp
    GDAL1.11版本号对SHP文件索引加速測试
    Tcl 简单介绍及特性
    Hardwood Species
    java整合easyui进行的增删改操作
  • 原文地址:https://www.cnblogs.com/lxl0419/p/8511635.html
Copyright © 2011-2022 走看看