我得到答案659但是那个答案是错误的,请检查一下。 这是我的代码
var fact=1;
for(var i=1;i<=100;i++){
fact = fact*i;
}
var sum = 0;
while (fact > 0) {
sum += fact % 10;
fact = Math.floor(fact / 10);
}
console.log(sum);
答案 0 :(得分:1)
length
的定义中存在语法错误 - var
关键字应该在它之前,而不是之后,以及sum
计算中的类似问题。
无论如何,我认为将数字转换为字符串是很难的方法。您可以使用%
运算符获取最后一位数字并将数字除以10(不要忘记发言!),直到您完成所有数字:
var sum = 0;
while (fact > 0) {
sum += fact % 10;
fact = Math.floor(fact / 10);
}
答案 1 :(得分:0)
冷却。你写了一段非常明智的代码。但是有几件事需要考虑。一个是巨大的100!如果你去控制台并输入一些代码,你会看到:
> fact=1
1
> for(i=1;i<=100;i++){fact *= i;}
9.33262154439441e+157
Crikey。查看最大的整数js可以显示10到157。它小得多!因此,如果这是一个编程任务,你必须更加微妙。
接下来,如果您获得所有158位数字,并且想要使用您的策略添加它们,您可能需要将您获得的字符串(子字符串毕竟是一个字符串)转换为数字。
但实际上,问题是,你可以确定数字的总和而不用计算数字吗?