1递归 函数:
通过递归来计算任意数的阶乘
递归的核心思想就是“化整为零”,将一个大问题拆分为一个小问题
例子:想求6的阶乘,如何计算?
720 6! = 6 * 5!
120 5! = 5 * 4!
24 4! = 4 * 3!
6 3! = 3 * 2!
2! = 2 * 1
其实递归的功能和循环类似,都是可以用来反复去执行某段代码的,
但是相比于循环来说,递归的执行性能要低的多,
并且大部分解析器都会限制递归执行的次数
相比于循环,递归的逻辑(代码)更容易理解
一般情况下,开发中递归不是我们的首选,甚至我们应该尽量避免使用递归
// 递归版本的阶乘计算
function jieCheng2(n) {
//判断n是否等于1
// 基线条件,设置递归的终止条件
if(n === 1){
return 1;
}
//如果n大于1,例如n=6
//6! = 6 * 5! n! = n * (n-1)!
//递归条件,规定了如何对问题进行拆分
return n * jieCheng2(n-1);
}
// console.log(jieCheng2(10))
// 创建一个函数,用来求一个数幂运算(使用递归)
// 6^6 = 6 * 6^5
// 6^5 = 6 * 6^4
function pow(num, times) {
//设置基线条件(递归的停止)
if(times === 1){
// 要计算num的1次幂,直接返回num
return num;
}else if(times === 0){
return 1;
}
//设置递归条件(拆分问题)
return num * pow(num, times-1);
}
console.log(pow(2, 10));
2递归删除某个元素:
// 递归 删除空的children数组
const

本文介绍了递归函数在计算阶乘、删除空children数组和深克隆对象中的应用,同时讨论了递归的性能问题以及在前端开发中的使用策略。作者强调了递归的优缺点,并分享了学习前端技术的重要性和资源。
最低0.47元/天 解锁文章
989

被折叠的 条评论
为什么被折叠?



