递归是什么?递归的优缺点是什么?

递归:直接或间接调用自身算法的过程

满足使用递归的条件:

  • 子问题为同类事物,且更简单
  • 必须有个出口

优点:

  • 代码简洁
  • 符合思维习惯,容易理解

缺点:

  • 效率较低
  • 递归层次太深,耗内存且容易栈溢出一定要使用的话,最好使用缓存避免相同的计算,限制递归调用的次数