2016-10-05 3 views
0

나는 대답 659를 얻고있다.하지만 그 중 하나는 틀린 대답이다. var 키워드가 없습니다 그 후, 그 전에 와서해야하며, sum의 계산에 비슷한 문제 - 이 내 코드숫자 100의 숫자 합계를 찾습니다! javascript

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

코드에 어떤 문제가 있습니까? 나는 그것이 그런 식으로 작동하지 않는다는 것을 의미합니다. 정말로 한자리 수를 얻더라도. –

+0

'fact = fact * i;'대신'fact + = fact * i;'를하고 싶지 않습니까? –

+0

@NinaScholz'길이 = var strlen (사실);', sum + = var substr (사실, j, 1); ' – guest271314

답변

1

이다가 length의 정의에 구문 오류입니다.

숫자를 문자열로 변환하는 것이 어려운 방법이라고 생각합니다.

var sum = 0; 
while (fact > 0) { 
    sum += fact % 10; 
    fact = Math.floor(fact/10); 
} 
0

쿨 : 당신은 (! 바닥에 잊지 마세요) 당신이 모든 자리 완료 될 때까지 마지막 숫자를 얻기 위해 % 연산자를 사용하고 10 수를 나눌 수 있습니다. 매우 현명한 코드를 작성했습니다. 그러나 생각해야 할 몇 가지 사항이 있습니다. 하나는 100의 거대한 크기입니다!. 당신이 콘솔에 가서 몇 가지 코드를 입력하면,이 나타납니다 :

> fact=1 
1 
> for(i=1;i<=100;i++){fact *= i;} 
9.33262154439441e+157 

쪽 이죠 .- 야, 이것 참입니다. 10에서 157까지. js가 표시 할 수있는 최대 정수를 찾습니다. 그것은 훨씬 작습니다! 따라서 이것이 프로그래밍 과제라면 더 미묘해야합니다.

다음으로 전략을 사용하여 158 자리 숫자를 추가하려는 경우 얻은 문자열 (결국 부분 문자열은 문자열 임)을 숫자로 변환해야 할 수 있습니다.

하지만 실제로 질문은 없이 숫자 합계를 계산할 수 있습니까? 숫자를 계산 하시겠습니까?

관련 문제