递归是一种通过调用自身来解决问题的编程方法,递归的优点是它可以将复杂问题分解为更简单的子问题,从而提供一种清晰简洁的解决方法。然而,递归的效率可能较低,并且可能占用大量的内存,因为它会在每个递归调用中存储临时状态,满足条件时返回,要避免递归进入无限循环,导致栈溢出错误。
1.阶乘:一个正整数的各个数字相乘所得的积
const factorial = (n) => {
if (n === 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
console.log(factorial(5)); // 输出:120
2.斐波那契数列:是一个数列,其中每个数都是前两个数之和,一般情况下,前两个数两个数是0和1
fibonacci
函数以一个正整数作为参数 n
,并返回斐波那契数列的第 n
个元素。基于递归的思想,当 n
为0或1时,直接返回对应的数字。否则,递归地计算前两个数字之和,并返回结果。
const fibonacci = (n) => {
if (n === 0) {
return 0;
} else if (n === 1) {
return 1;
} else {
return fibonacci(n - 1) + fibonacci(n - 2);
// 7+6
}
}
console.log(fibonacci(7)); // 输出:13
3.数组求和
const fn = (list) => {
if (list.length === 0) {
return 0
} else {
return list[0] + fn(list.slice(1))
}
}
console.log(fn([1, 2, 4, 5]));//12