gpt4 book ai didi

javascript - 如何在javascript中找到更好的函数实现

转载 作者:行者123 更新时间:2023-11-30 08:10:11 24 4
gpt4 key购买 nike

我写了三个 javascript 函数来完成相同的任务。它们都提供相同的结果,但我想知道其中哪一个更快且最具可扩展性?

这是我的功能第一个

function odds(n, p) {
var acc = 1;
for (var i = 0; i < n; i++) {
acc *= (n - i) / (p - i);
}
return acc;
}

第二个

function odds(n, p) {
if (n == 0) {
return 1;
} else {
return (n / p) * odds(n - 1, p - 1);
}
}

第三个

var odds = (function () {
var odds1 = function(n, p, acc) {
if(n == 0) {
return acc;
} else {
return odds1(n - 1, p - 1, (n / p) * acc);
}
}
return function(n, p) {
return odds1(n, p, 1);
}
}());

最佳答案

您必须测试才能回答这样的问题,但通常情况下,内部循环几乎总是比 javascript 中的递归更快。测试线束,如 jsPerf可以为您提供真实数据非常非常有帮助。

我在这里为您的三个案例构建了一个 jsPerf:http://jsperf.com/oddsflavors .对于我选择的参数(我不确定哪些参数对您来说最重要),它显示您的第一个代码选项(没有递归的那个)大约是第二个代码选项的两倍。

关于javascript - 如何在javascript中找到更好的函数实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11623812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com