我正在学习《算法图解》这本书,试图理解递归。书中的一个挑战是“编写递归函数以计算列表中项的数量。” 我想出了以下代码,可以正常运行:
function recursiveArrayCount(arr, count) {
if (arr.length == 0) {
return 0;
} else {
arr.pop();
return count + recursiveArrayCount(arr, count);
}
}
let myArray = [1, 10, 23, 11, 4, 48, 88];
console.log(recursiveArrayCount(myArray, 1));
我的问题是,有没有更好的方法在 JavaScript 中实现这个功能?特别是我不喜欢必须使用初始值为“1”的计数器 - 但我想不到其他的方法。
pop
改变数组。这对于调用者来说不好,他们会发现在调用之后他们的数组已被破坏。另外,看到尝试计算数组条目而不使用length
属性(当然是直接的解决方案)的代码仍然使用该属性也很奇怪。 - trincot