递归
2021 algorithm递归,是指在函数的定义中使用函数自身的方法。
这里主要是去了解:
- 递归的终止条件
- 递归的返回值
递归的终止条件
递归要包含一个终止条件,以保证递归不会无限循环无终止的调用。一旦忽略了终止条件,往往就会导致内存溢出。
var fibonacci = function(n) {
if (n === 1 || n === 2) return 1;
return fibonacci(n - 1) + fibonacci(n - 2);
}
以上典型的斐波那契数列的递归调用例子,当参数 n 等于 1 或者 2 的时候,就会触发终止条件,不会继续递归调用。
递归的返回值
当我们需求的返回值比较简单时,可以参考上面的,当我们的返回值比较复杂(如数组,对象等)时,我们可以在调用的时候给默认值,最后返回最终值。
function pushArray(n, arr) {
arr.push(n);
if (n >= 10) {
return arr;
}
return pushArray(n + 1, arr);
}
var r = pushArray(1, []);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]