我不能爲我的生活找出爲什麼這不起作用。爲什麼此代碼導致無限循環?
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;
}
}
當我刪除最後一條if語句並且無條件地將推送器推送到refP時,它不會給我循環。
謝謝。請讓我知道是否應該清理此代碼,或者嘗試用較少的代碼隔離問題。
是的,你應該嘗試更多的第一個問題。例如,你確定'pusher.closestRefP> 2'確實是真的嗎? – Matt
最後refP if,使得refp <24因此是循環。 – JonathanRomer