递归
基础概念
递归,即调用函数自身。本质上是将问题拆解成更小规模的相同问题。
简单优化思路(==记忆化搜索==):如果有重复计算,将结果保存下来
递归方法:
- 确定问题
- 解决基准问题
- 拆解问题
示例
斐波那契数列(Fibonacci)
1 | int fib(int n){ |
当出现重复问题时数据会成指数型增长,子问题会被重复计算多次.
可以在计算时将计算过的保存下来,并在计算时再判断是否计算过,用来优化性能
1 | vector<int> saved(n,-1); |
汉诺塔(honai)
1 | void hanoi(int n, char F, char A, char T){ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Frite的个人博客!