- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下函数将我的 Chromium 浏览器卡在 50
输入上,而在 10
左右的低得多的输入上完美返回。我相信这是由于递归级别太多而导致的结果,这些级别的递归调用填满了堆栈,并且不允许代码完成执行。
var Y = function (f) {
return f(function (x) {
return Y(f)(x);
});
};
console.log(Y(function (f) {
return function (n) {
if (n === 0) {
return 0;
} else if (n === 1) {
return 1;
} else {
return f(n - 1) + f(n - 2);
}
};
})(10)); // replace 10 by 50 to reproduce issue
例如,JavaScript 没有像Scheme 那样的尾部调用优化。那么,我们如何在 JavaScript 中编写递归函数,使其不会在输入非常大的情况下崩溃呢?
(请忽略 Y
函数。这只是我正在做的一些学习的一部分。传递给 console.log()
的 lambda 是等效的到一个简单的显式递归斐波那契函数。)
最佳答案
我会尝试这样的事情:
var level = 0;
function f(n) {
level++;
if (level > 50) { // or another value other than 50
throw '...';
}
var val = _f(n);
level--;
return val;
}
function _f(n) {
if (n === 0) {
return 0;
} else if (n === 1) {
return 1;
} else {
return f(n - 1) + f(n - 2);
}
}
然后像以前一样使用 f
函数,并且您可以在对 f
的调用周围使用 try-catch block 来检测函数何时到达太深的点.
(我没有测试过,但我认为它会起作用)
关于javascript - 如何防止 JavaScript 执行堆栈被过多的递归级别填满?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25334831/
我正在运行 Play! 2.3 使用 Akka 的多线程应用程序。每个线程访问 MySQL 数据库并运行一些计算。每次我运行一组这样的任务时,应用程序的内存占用量都会增加,这主要是由于 JDBC4Pr
我是 JavaScript 新手,正在尝试实现选择排序来亲自接触数组(注意:我知道有一个内置的排序函数)。不过,我遇到了一些奇怪的行为。 这是我的代码: function selectionSort(
我正在使用 unsemantic grid创建我的布局。好吧,我有一个容器,其中有一个标签和一个输入文本。标签的宽度为 20% 然后 margin-rightof 1em 然后我想让容器中的其余空间由
看看这张取自 morsmachine.dk/go-scheduler 的著名图片 灰名单是 P 的本地运行队列。如果此队列变空,它们将被全局运行队列中的 go routines 填充。 问题是,谁来填
(帖子创建于 2016 年 10 月 5 日) 我注意到每次运行图像并删除它时,我的系统都不会恢复到原来的可用空间量。 我应用于容器的生命周期是: > docker build ... > docke
我有一个应用程序,它在启动时运行两个或三个完整的 GC。有很多堆空间,不需要运行任何 GC(minor 或 full)。然而,在 gc 日志中,我可以看到 permgen 被填满,然后立即运行完整
我正在尝试制作可视化 VStack 属性的 VStack 示例应用 但是我的 VStack 无法填满屏幕的宽度 我在互联网上尝试了很多解决方案(frame modifier、HStack with S
[已解决] 所以我在页面顶部有一个高度恒定的 div,我希望在它下面有一个 iFrame 来填充页面的其余部分。 Google Images 和 LinkedIn 做的事情非常相似 参见:http:/
我正在尝试使我的标题框与我的图像大小相同,同时又不失去 flex-slider 的响应能力,有什么建议吗? http://jsfiddle.net/bmBnF/10/ 疯狂的K 最佳答案 我通过将其设
我有一个元素是 的兄弟元素动态填充 hello 我想要 固定在屏幕底部直到动态 s 要求将其向下推到 View 下方。 我尝试了以下但无法获得我想要的结果。 该元素位
我是一名优秀的程序员,十分优秀!