递归:
//递归本质上是一种算法,是一种函数调用自身的编程技巧。
//递归再JS语言中的具体表现为:函数调用自身
//递归的特点:
//重复计算执行,和循环非常类似。
//所以递归也和循环一样,需要一个出口(停止条件)!
递归和循环很相似,可不可以用递归代替循环?
//答:不可以
//为什么?
//答://性能不如循环
//内存占用过高(非常致命)
//递归次数必须预期收敛
何时使用递归:
//--操作简洁
//--当处理子问题与原始问题相同时,操作简单
递归测试:
// 从1开打印,大值能打印到 一万多
// 从1打印到100,大值花费 11~16 ms
循环测试:
// 从1开打印,没有测出结果,但是直到到三十多万没有问题
// 从1打印到100,大致花费 2~3 ms
//案例: 在控制台打印 1--100 之间的整数
//var startD = new Date();
function printNumber(n) {
//函数停止调用自身的条件
if (n > 100) {
return;
}
console.log(n);
//调用自身
printNumber(n + 1);
}
printNumber(1)
//var stopD = new Date();
//console.log(stopD.getTime() - startD.getTime())
// 递归测试
// 从1开打印,大值能打印到 一万多
// 从1打印到100,大值花费 11~16 ms
// var startD = new Date();
for (var i = 1; i <= 100; i++) {
console.log(i);
}
// var stopD = new Date();
// console.log(stopD.getTime()-startD.getTime());
// 循环测试
// 从1开打印,没有测出结果,但是直到到三十多万没有问题
// 从1打印到100,大致花费 2~3 ms
文章讲述了递归的基本概念,强调了递归的重复计算特性及其与循环的相似性。讨论了递归的性能劣势,尤其是在内存占用上,并指出递归适用于操作简洁且子问题与原问题相同的场景。通过测试对比了递归和循环在打印1-100整数上的时间差异。
580

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



