2013-05-25 5 views
0

이것이 작동하지 않는 이유를 알기 힘듭니다. 나는 지난 경우 문을 제거하고 단지 무조건 refP에 푸셔를 누르면이 코드로 인해 무한 루프가 발생하는 이유는 무엇입니까?

var refP = []; 
var distance = function (p1, p2) { 
    return dist(p1.x, p1.y, p2.x, p2.y); 
} 
while (refP.length < 24) { 
    var pusher = { 
     x: -1, 
     y: -1, 
     closestRefP: 9999999 
    }; 
    pusher.x = (random(0, 400)); 
    pusher.y = (random(0, 400)); 
    for (var d = 0; d < refP.length; d++) { 
     if (distance(pusher, refP[d]) < pusher.closestRefP) { 
      pusher.closestRefP = distance(pusher, refP[d]); 
     } 
    } 
    if (pusher.closestRefP > 2) { 
     refP[refP.length] = pusher; 
    } 
} 

그것은 나에게 루프를 제공하지 않습니다.

감사합니다. 그리고이 코드를 정리해야하는지 아니면 적은 코드로 문제를 격리하려고하는지 알려주세요.

+0

예, 먼저 문제를 격리하고 시도해야합니다. 예를 들어,'pusher.closestRefP> 2'가 정말로 사실입니까? – Matt

+0

그 마지막 refP if는 refp <24 그러므로 루프를 만듭니다. – JonathanRomer

답변

2

randomdist 기능이 제대로 작동합니까? 이와

var distance = function (point1, point2) { 
    var xs = 0; 
    var ys = 0; 

    xs = point2.x - point1.x; 
    xs = xs * xs; 

    ys = point2.y - point1.y; 
    ys = ys * ys; 

    return Math.sqrt(xs + ys); 
} 

하고 random(0, 400) 전화 :

은 당신의 distance 기능을 교체

pusher.x = Math.floor(Math.random() * 400); 
pusher.y = Math.floor(Math.random() * 400); 

나를 위해 일했다.

+0

제 편집자가이 코드를 받아들이지 않는 것 같지만 다른 편집기에 넣으면 제대로 작동합니다. 편집자를 바꿀 때가 된 것 같습니다. 감사! – Henrik

+0

어떤 편집기를 사용하고 있으며 무엇에 대해 불평하고 있습니까? – rtcherry

+0

나는 khanacademy의 편집자로 일하고 있었다. 어제 나는 Textmate를 설치 관리했다. (임마 맥.) – Henrik

관련 문제