码迷,mamicode.com
首页 > 其他好文 > 详细

对递归和迭代的认识

时间:2018-03-05 23:29:41      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:计算   AC   --   代码   class   集合   div   str   无限   

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

迭代:利用变量的原值推算出变量的一个新值.如果递归是自己调用自己的话,迭代就是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;

}

 

对递归和迭代的认识

标签:计算   AC   --   代码   class   集合   div   str   无限   

原文地址:https://www.cnblogs.com/lxl0419/p/8511635.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!