我想知道爲什麼我在這裏得到一個無限循環。我只是不想傳遞這個初始值,所以如果他們是undefined
他們會自動計算。它只是爲了清理我的函數調用,只使用一個參數。如果我通過它們,一切運行良好,過程結束。誰能幫忙?由於當我沒有定義參數時,爲什麼會出現無限循環?
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);
感謝您修復您的變量名稱。 :)你想'if(lower == undefined && upper == undefined)'而不是'if(!lower &&!upper)'。 – 2012-07-24 15:50:53
@ElliotBonneville看看我的合併功能現在看起來如何; https://gist.github.com/3165423 - 你可以留下評論在改進的要點頁!感謝積極的批評! =) – renatoargh 2012-07-24 15:58:21