首页 > 代码库 > JavaScript 递归
JavaScript 递归
递归是一种解决问题的方法,它解决问题的各个小部分,直到解决最初的大问题。通常涉及 函数调用自身。 能够像下面这样直接调用自身的方法或函数,是递归函数: var recursiveFunction = function(someParam){ recursiveFunction(someParam); }; 能够像下面这样间接调用自身的函数,也是递归函数: var recursiveFunction1 = function(someParam){ recursiveFunction2(someParam); }; var recursiveFunction2 = function(someParam){ recursiveFunction1(someParam); }; 假设现在必须要执行recursiveFunction,结果是什么?单单就上述情况而言,它会一直 执行下去。因此,每个递归函数都必须要有边界条件,即一个不再递归调用的条件(停止点) , 以防止无限递归。 JavaScript 调用栈大小的限制 如果忘记加上用以停止函数递归调用的边界条件, 会发生什么呢?递归并不会无限地执行下 去;浏览器会抛出错误,也就是所谓的栈溢出错误(stack overflow error) 。 每个浏览器都有自己的上限,可用以下代码测试: var i = 0; function recursiveFn () { i++; recursiveFn(); } try { recursiveFn(); } catch (ex) { alert(‘i = ‘ + i + ‘ error: ‘ + ex); } 在Chrome v37中,这个函数执行了20 955次,而后浏览器抛出错误RangeError: Maximum call stack size exceeded(超限错误:超过最大调用栈大小) 。Firefox v27中,函数执行了 343 429次,然后浏览器抛出错误 InternalError: too much recursion(内部错误:递归 次数过多) 。
JavaScript 递归
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。