【发布时间】:2022-11-10 21:57:31
【问题描述】:
问题是在数字末尾有多少个零, 例如,如果 5 的阶乘为 120,则结果为 1,因为如果有 2 个零,则最后只有一个零,则结果为 2。
所以我在javascript中尝试了这个逻辑来解决这个问题,并且对于不同的数字它可以工作,但对于某些测试用例它没有显示所需的输出。
无法弄清楚为什么会出现错误,如果有人有更好的优化代码,请分享并指出正在做的错误
const fun=(n)=>
{
let fact = 1;
let counter = 0;
for (let i = 1; i <= n; i++) {
fact *= i
}
while (fact % 10 == 0) {
let val = fact / 10;
fact = val;
counter++
}
return counter
}
console.log(fun(5))
【问题讨论】:
-
失败的测试用例有哪些?无法存储在javascript数字中的大数字?
-
1. 如果您想要阶乘结果和尾随零的数量,您可以编写一个计算数字的阶乘的函数,但使用字符串而不是数字。 2.如果你只想要尾随零的数量,你可以存储零的数量而不计算阶乘结果。您应该计算阶乘除以 10 的次数。在这种情况下,您的问题已经有了答案here。
-
好的!数学通常比复杂的脚本更有效。
标签: javascript data-structures