递归的思想
- 函数的内部 自己调用自己,就是递归 (避免死循环,加退出条件)
function close(n) {
if (n == 1) {
return 1
}
return n * close(n - 1)
}
console.log(close(3))
// 思路:1: 如果传入的值是1.1递归相乘,得到的还是1,会进入死循环,所以,如果传入的值是1,直接return 1
// 2:假设当前传入的是3, return 3 * close(3-1) => return 3 * close(2)
// 3: close(2)继续执行 return 3 * (2 * close(2-1)) => return 3 * (2 * close(1))
// 4: close(1)继续执行 return 1 ,然后到第三步,return 3 * (2 * close(1)) => return 3 * (2 * 1) => return 3*2 => 6
递归实现斐波那契
不管用户输入的是哪个值,我们只需要知道输入的前一项,和前前一项就行
如果输入的是1,2 前两项都是1 ,所以直接返回1
1,1,2,3,5,8,13,21…
function fb(n) {
if (n === 1 || n === 2) {
return 1
}
return fb(n - 1) + fb(n - 2)
}
console.log(fb(3))
具体步骤和阶乘一样~~~~~