一、符合运用递归的条件:
- 能够将大问题进行分解为各个类似的小问题
- 各个小问题的解法类同与大问题
- 有问题终止的条件
二、递归代码的写法:
- 先推导出数学公式
- 找到终止条件
- 基于此写代码
三、递归代码注意事项:
-
警惕堆栈溢出:
因为不停的函数调用,建立方法栈,若无终止条件,或者超出栈内存,则会溢出
解决方案:
1)确立的正确终止条件
2)限制递归调用的深度,即建立调用深度计数器。 -
递归中函数值的重复计算:
如:f(4) 可能会被重复计算好几次
解决方案:
用散列表存储函数的值,在每次计算之前查询。 -
递归代码的调试方法:
因为对于规模较大,层次较深的递归代码,如果仅仅单步调试会非常麻烦困难。
解决方案:
1)日志输出每个阶段的值
2)结合条件断点进行调试
来源:CSDN
作者:alone away
链接:https://blog.csdn.net/quanzywy/article/details/104106355