为什么此递归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