递归

孤街醉人 提交于 2020-01-29 15:16:36

一、符合运用递归的条件:

  1. 能够将大问题进行分解为各个类似的小问题
  2. 各个小问题的解法类同与大问题
  3. 有问题终止的条件

二、递归代码的写法:

  1. 先推导出数学公式
  2. 找到终止条件
  3. 基于此写代码

三、递归代码注意事项:

  1. 警惕堆栈溢出:
    因为不停的函数调用,建立方法栈,若无终止条件,或者超出栈内存,则会溢出
    解决方案:
    1)确立的正确终止条件
    2)限制递归调用的深度,即建立调用深度计数器。

  2. 递归中函数值的重复计算:
    如:f(4) 可能会被重复计算好几次
    解决方案:
    用散列表存储函数的值,在每次计算之前查询。

  3. 递归代码的调试方法:
    因为对于规模较大,层次较深的递归代码,如果仅仅单步调试会非常麻烦困难。
    解决方案:
    1)日志输出每个阶段的值
    2)结合条件断点进行调试

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!