
通过尾递归避免栈溢出
发布日期:2021-05-09 05:14:13
浏览次数:23
分类:技术文章
本文共 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。
发表评论
最新留言
很好
[***.229.124.182]2025年05月04日 13时07分02秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Kubernetes实战(八)-定时任务(Cronjob)
2025-04-03
Kubernetes实战(十三)-标签选择器(Label)
2025-04-03
Kubernetes实战(十五)-敏感数据管理(Secret)
2025-04-03
Kubernetes实战(十八)-共享卷子路径划分(Subpath)
2025-04-03
Kubernetes实战(十四)-配置管理(ConfigMap)
2025-04-03
Kubernetes实战(十)-升级和回滚(Deployment)
2025-04-03
kubernetes实际生产中遇到的问题及解决办法
2025-04-03
Kubernetes容器日志处理方案
2025-04-03
Kubernetes容器集群管理环境 - Prometheus监控篇
2025-04-03
Kubernetes对接Ceph存储实现云原生持久化
2025-04-03
Kubernetes对象job详解
2025-04-03
Kubernetes对象Service详解
2025-04-03
kubernetes常用工具
2025-04-03
Kubernetes快速上手:部署、使用及核心概念解析
2025-04-03
Kubernetes改变监控的三种方式
2025-04-03
Kubernetes故障排查与面试汇总
2025-04-03
Kubernetes故障排查实战
2025-04-03
Kubernetes核心概念总结
2025-04-03