gpt4 book ai didi

Javascript - 来自字符串的阶乘

转载 作者:行者123 更新时间:2023-11-30 07:51:37 27 4
gpt4 key购买 nike

我正在尝试制作一个计算阶乘的简单脚本。例如,如果您输入“2!+5!+4”,您将得到“2+120+4”。我不知道你会怎么做。

function factorial(num) {
if (num < 0)
return -1;
else if (num == 0)
return 1;
else {
return (num * factorial(num - 1));
}
}

var calcvalue = "2!+5!+4";
var facregex = /(\d)+\!/gi;
var facmatch = calcvalue.match(/(\d)+\!/gi);
var faclength = calcvalue.match(/(\d)+\!/gi).length;
console.log(faclength);

for (var i = 0; i < faclength; i++) {
var calcvalue = calcvalue.replace(facmatch[i], toString(factorial(Number(facmatch[i]))));
}

console.log("Final: "+calcvalue);

最佳答案

只需用 \d+ 部分的阶乘结果替换 \d+ 后跟 ! 的任何出现):

var result = mathString.replace(/(\d+)!/g, function(match, number) {
return factorial(+number);
});

使用箭头函数更短:

var result = mathString.replace(/(\d+)!/g, (m, n) => factorial(+n));

示例:

function factorial(num) {
if (num <= 1)
return 1;

return num * factorial(num - 1);
}

var mathString = "2!+5!+4";
var result = mathString.replace(/(\d+)!/g, (m, n) => factorial(+n));
console.log(result);

注意:不要在意阶乘位前面是-还是+,因为它会留在那里,因此数字由正则表达式检索的将始终为 >= 0,因此可以简化 factorial 函数(参见代码片段)。

关于Javascript - 来自字符串的阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51902197/

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