爲什麼此遞歸countOccurence函數不起作用?這有一個子程序。有沒有辦法做到這一點沒有子程序?它似乎在JavaScript中你必須有一個閉包(子程序功能)的計數器變量,否則它會被重寫每一次!遞歸計算出現次數
function numOccurencesRecursive(arr, val) {
//base case. check it if it only has a length of 1
var count = 0;
function doCount(arr, val) {
if (arr[0] === val) {
count++;
} else {
count += doCount(arr.slice(1), val)
}
return count;
}
return doCount(arr, val);
}
console.log(numOccurencesRecursive([2, 7, 4, 4, 1, 4], 4)); // should return 3 but returns 1
*刪除*外'count'變量和處理由'返回0'基本情況;然後添加適當的重現情況。你擁有'這個角色是否匹配'所需的所有計數信息?和「接下來的幾個字符有多少匹配?」對於再發生的情況。這將簡化邏輯 - 包括修復此錯誤 - 並使其更接近「理想」遞歸功能。 – user2864740