什么是递归,递归有哪些优点和缺点?
- 递归: 直接或间接调用自身算法的过程
- 使用递归的条件:
子问题为同类事物,且更简单
必须有个出口 - 优点:
代码简洁
符合思维习惯,容易理解 - 缺点:
效率较低
递归层次太深,耗内存且容易栈溢出一定要使用的话,最好使用缓存避免相同的计算,限制递归调用的次数 - 举个例子(0-100求和)
方法一
function sumFunc(num, start) { num += start start++; if (start > 100) { console.log(num); return num } else { sumFunc(num, start) } } // 5050 "sum"
方法二
function num(n) { if (n == 1) return 1; return num(n - 1) + n; } let sum = num(100); console.log(sum, "sum") // 5050
- 使用递归的条件: