gpt4 book ai didi

Javascript:乘法持久性问题建议的解决方案执行超时

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

我有以下问题:

写一个函数 persistence,它接受一个正参数 num 并返回它的乘法 persistence,这是你必须将 num 中的数字相乘直到达到一位数的次数。

function persistence(num) {

let count = 0;
let numStr = num.toString();

if (numStr.length === 1){
return 0
}

if (numStr.length === 2){
while (numStr.length > 1){
count += 1
numStr = (Number(numStr[0])*Number(numStr[1])).toString()
}
}

if (numStr.length === 3){
while (numStr.length > 1){
count += 1
numStr = (Number(numStr[0])*Number(numStr[1])*Number(numStr[2])).toString()
}
}

return count
}

persistence(999) //solution 4

我收到“执行超时(12000 毫秒)”错误。我知道有不同的方法可以解决这个问题,但我想具体了解我的代码出了什么问题。

最佳答案

您的代码无法正常工作的原因是您总是将 str[2] 添加到最终结果。

999 > 729 > 126 > 12 > 2

所以在这里您看到一个循环编号变为 12 并且 str[2]undefined 并且它将是 NaN 所以循环永远不会结束。

一个简单的方法是在 while 中使用 reduce() 并且在相乘时不需要转换为 Number()

function persistence(num) {

let count = 0;
num = String(num);
while(num.length > 1){
count++;
num = String([...num].reduce((ac,a) => a * ac,1));
}
return count;
}

console.log(persistence(999))

关于Javascript:乘法持久性问题建议的解决方案执行超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55536199/

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