// 计算 1-100 累加
function add(a, b) {
return a === b ? a : add(a, b - 1) + b
}
console.log(add(1, 100))
// 计算阶乘
function factorial(n) {
return n <= 1 ? 1 : n * factorial(n - 1)
}
console.log(factorial(5)) // 120
理论上所有递归都可以用循环实现。
注意防止栈溢出(函数调用就是通过栈这种数据结构实现的),需要有结束条件。
// 从 x 加到 y
// function(1, 100) ===> 100 + function(1, 99) ===>
// 99 + function(1, 98) ===> ... ===>
// 3 + function(1, 2) ===> 2 + function(1, 1) ===> 1
function add(x, y) {
return y === x ? y: y + add(x, y - 1)
}
console.log(add(1,3))