我已經在偽代碼中獲得了下面的函式,我正在嘗試將其轉換為 JS,但我一直在遇到無限回圈。
更新
感謝 zord,mid 修復了遞回問題。現在我得到了錯誤的總和,有什么建議嗎?
我究竟做錯了什么?
function SUM(arr, left, right){
if(left > right){
return 0
}
else if(left == right){
return arr[left]
}
mid = Math.floor((left right) / 2);
lsum = SUM(arr,left,mid);
rsum = SUM(arr,mid 1,right);
return lsum rsum
}
arr = [1,2,3,4,5]
left = 0;
right = arr.length - 1;
console.log(SUM(arr, left, right));
謝謝!
uj5u.com熱心網友回復:
mid應該介于left和之間right:
mid = Math.floor((left right) / 2);
此外,您需要將變數設定為 VLAZ 所提到的塊范圍。否則它們將是全域的,并被函式的不同運行覆寫。
const mid = Math.floor((left right) / 2);
const lsum = SUM(arr, left, mid);
const rsum = SUM(arr, mid 1, right);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/383325.html
標籤:javascript 递归 和
