千锋web前端开发项目教程_1000集完全零基础入门HTML5+CSS3+JS到

# 概念:在函数内部,自己调用自己
# 特点:递归函数,必须给自己找一个出口,否则会变成一个死递归。造成内存溢出
# 缺点:1. 代码晦涩,不易理解;2. 代码执行效率低
# 使用场景:当不确定需要遍历多少次的时候。
# 示例:
// 1. 计算100以内的阶乘
// 100 * 99 * 98 *... *1
function fn(n) {
if (n == 1) return 1
return n * fn(n - 1)
}
console.log(fn(1000))
var sum = 1
for (var i = 1; i <= 1000; i++) {
sum *= i
}
console.log(sum);
// 斐波那契数列: 兔子数列
// 1,1,2,3,5,8,13,21...
// 规则:1. 前两位必然是1; 2. 从第三位数开始,每一位都是前两位的和
function fun(n) {
if (n == 1 || n == 2) return 1
return fun(n - 1) + fun(n - 2)
}
console.log(fun(2));