在JavaScript中,递归是一种函数调用自身的编程技巧。递归函数通常包含两个主要部分:基本情况(base case)和递归步骤(recursive step)。基本情况是递归结束的条件,而递归步骤则是函数调用自身以解决问题的较小部分。
function factorial(n) {
// 基本情况
if (n === 0 || n === 1) {
return 1;
}
// 递归步骤
return n * factorial(n - 1);
}
console.log(factorial(5)); // 输出: 120
function fibonacci(n, memo = {}) {
// 基本情况
if (n === 0) return 0;
if (n === 1) return 1;
// 记忆化检查
if (memo[n]) return memo[n];
// 递归步骤
memo[n] = fibonacci(n - 1, memo) + fibonacci(n - 2, memo);
return memo[n];
}
console.log(fibonacci(10)); // 输出: 55
在递归函数中,return
语句用于返回当前递归调用的结果。每次递归调用都会有自己的执行上下文和返回值。递归函数的最终返回值是所有递归调用返回值的最终结果。
例如,在计算阶乘的例子中,return n * factorial(n - 1);
这行代码会返回当前n
与factorial(n - 1)
的结果的乘积,这个结果会被传递给上一层递归调用,直到达到基本情况。
希望这些信息对你有所帮助!如果有更多具体的问题,请随时提问。
没有搜到相关的沙龙