
通过尾递归避免栈溢出
发布日期:2021-05-09 05:14:13
浏览次数:21
分类:博客文章
本文共 693 字,大约阅读时间需要 2 分钟。
JavaScript中的递归即函数内调用函数自身,但递归是非常耗内存的,每一次调用都会分配一定的栈空间,达到一定的数量(具体看浏览器)便会溢出报错。
function recursion (num) { if (num === 1) { return 1; } return num + recursion(--num);}console.log(recursion(5)); // 15console.log(recursion(1000)); // 500500console.log(recursion(10000000)); // Uncaught RangeError: Maximum call stack size exceeded
对于尾递归来说,由于只存在一个调用帧,所以永远不会发生“栈溢出”错误。
'use strict';function recursion (num, total = 0) { if (num === 1) { return total + 1; } return recursion(num - 1, total + num);}console.log(recursion(5)); // 15console.log(recursion(1000)); // 500500console.log(recursion(10000000)); // Uncaught RangeError: Maximum call stack size exceeded
实际上还是报错了:D。
发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月20日 17时05分26秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Jenkins - 部署在Tomcat容器里的Jenkins,提示“反向代理设置有误”
2021-05-09
Jenkins(3)- 安装Jenkins过程中遇到问题的排查思路
2021-05-09
Cypress系列(14)- 环境变量详解
2021-05-09
Mysql 常用函数(42)- substring_index 函数
2021-05-09
Jmeter 常用函数(7)- 详解 __time
2021-05-09
Jmeter 常用函数(28)- 详解 __FileToString
2021-05-09
Jmeter 常用函数(29)- 详解 __eval
2021-05-09
centos7 - 安裝 Python 3.7
2021-05-09
用前端姿势玩docker【一】Docker通俗理解常用功能汇总与操作埋坑
2021-05-09
基于jquery的简洁树形折叠菜单
2021-05-09
adb shell 查看系统属性(用来判断特殊的操作系统)
2021-05-09
DDD(领域驱动设计)--战略设计
2021-05-09
Spread for ASP.NET技术白皮书
2021-05-09
深入解析 DataGrid 过滤功能
2021-05-09
TX Text Control文字处理教程(8)使用超链接
2021-05-09
响应式设计(Response Web Design)实践
2021-05-09
Asp.Net MVC4入门指南(4):添加一个模型
2021-05-09
我看TechEd 2012之技术热点
2021-05-09
Python和JavaScript在使用上有什么区别?
2021-05-09