2011-08-08 4 views
0

왜 아래 JavaScript 프로그램이 무한대 응답을 반환하는지 이해할 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 나는 초보자이며 상세한 설명을 감사 할 것입니다!역순으로 숫자 시리즈를 인쇄하는 자바 스크립트 프로그램

수학 및 수학 함수 만 사용하고 문자열 함수 나 배열은 사용하지 않아야합니다.

<script type = "text/javascript"> 

var input; 
var rev = 0; 

input=window.prompt ("Please enter a 5-digit number to be reversed."); 

input = input * 1; 

while (input > 0) 
{ 
    rev *= 10; 
    rev += input % 10; 
    input /= 10; 
} 
document.write ("Reversed number: " + rev); 

</script> 
+2

당신은 이미 답을 갖고있는 것 같다, 그래서 포인트 게시물은 다른 곳에서 거기에 아마,하지만 나중에 참조 :이 사이트는 게임의 의미에서 퍼즐입니다. 당신이 이해하지 못하는 버그에 대한 퍼즐의 경우, 주요 StackOverflow 사이트가 적절합니다. –

+0

여전히 올바른 위치로 마이그레이션 할 수 있습니다. – Joey

+0

@Joey. 적절한 위치는 마이그레이션 대상의 옵션이 아닙니다. 유일한 이유는 meta.codegolf입니다. –

답변

4

사용자의 전화 번호 : input /= 10;은 정수가 아닙니다. 이 같은 순서로 끝날 :

input rev 
1234.5 5 
123.45 54.5 
12.345 548.45 

이 결코 그래서 당신의 동안 조건이 그냥 1E-323, 다음 수는 정밀도의 부족에 도달하고 0

로 이동까지가는 계속, 0에 도달하지

input /= 10; 줄을 input = Math.floor(input/10);으로 바꾸면 제대로 작동합니다.

코드 골프이기 때문에 Math.floor를 사용하고 싶지 않을 것입니다. 더 작은 것이 있습니다. 다시 찾을 수 있는지 보겠습니다.

input = ~~(input/10);을 제공하면 input은 항상 양수입니다.

+0

질문은 꼬리표가 붙어 있지 않았다. code-golf – oenone

+3

@oenone 원래 code 골프 웹 사이트에 게시되었습니다. 그것은 나중에 여기로 옮겨졌습니다. – david

0
<html> 
<head> 
<script type="text/javascript"> 
function reversing(x){ 
    y=x%10; 
    x=parseInt(x/10); 
    document.write(y); 
    if(x!=0){ 
     reversing(x); 
    } 
} 
</script> 
</head> 

<body> 
<input id="txt_field" type="text" name="field" /> 
<input type="button" name="submit" value="Submit" onclick="reversing(document.getElementById('txt_field').value);"/> 
</body> 
</html> 
관련 문제