【发布时间】:2019-08-27 09:43:43
【问题描述】:
我有以下问题:
编写一个函数,persistence,它接受一个正参数 num 并返回它的乘法持久性,这是您必须将 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 毫秒)”错误。我知道有不同的方法可以解决这个问题,但我想具体了解我的代码有什么问题。
【问题讨论】:
-
我看不出有任何不同
ifstatments 的原因 -
您的“3”案例假定字符串在循环中始终为 3 位数;不会的,所以你最终会得到
NaN,而那永远是NaN(并且不止一个字符)。 -
while 循环的第一次迭代会得到
9*9*9 = 729。然后是7*2*9 = 126,然后是1*2*6 = 12,然后是1*2*undefined = NaN,然后是'N'*'a'*'N' = NaN,然后是'N'*'a'*'N' = NaN,然后是'N'*'a'*'N' = NaN,以此类推。
标签: javascript function loops if-statement while-loop