Chciałbym wiedzieć, dlaczego dostaję tutaj nieskończoną pętlę. Po prostu nie chcę przekazywać tych początkowych wartości, więc jeśli są one undefined
, zostaną automatycznie obliczone. Ma tylko oczyścić wywołanie funkcji, aby użyć tylko jednego parametru. Jeśli je przepuszczę, wszystko działa poprawnie i proces się kończy. Czy ktoś może pomóc? DziękiDlaczego otrzymuję nieskończoną pętlę, gdy nie definiuję parametrów?
function merge(array, lower, half, upper){
//Suppressed for the sake of brevity
}
function mergeSort(array, lower, upper){
if(!lower && !upper){ //take a look here
lower = 0;
upper = array.length - 1;
}
if(lower < upper){
var half = Math.floor((lower + upper)/2);
mergeSort(array, lower, half);
mergeSort(array, half + 1, upper);
merge(array, lower, half, upper);
}
}
var array = [8, 3, 6, 4, 1, 0, 23, 12, 15, 63];
mergeSort(array); //infinite loop here
console.log(array);
Dziękujemy za naprawienie nazw zmiennych. :) Chcesz 'if (lower == undefined && upper == undefined)' zamiast 'if (! Lower &&! Upper)'. –
@ ElliotBonneville przyjrzyj się, jak wygląda teraz moja funkcja Merge; https://gist.github.com/3165423 - możesz dodawać komentarze na stronie głównej w celu ulepszenia !!! Dzięki za pozytywną krytykę! =) – renatoargh