递归
效率问题
怎样的递归才是高效的?
高效的递归式是递归的每一部分没有重合,而是将大问题拆成若干个小问题。
一个极其高效的例子:快速排序。详见我的博客 【C++ 程序】 快速排序。
一个极其低效的例子:斐波那契数列的计算用递归就是一件很不合适的事,原来算过的又重新算一遍,是一个极其糟糕的递归,重合面积 100%。
调用问题
在调用过程中,一定要有停止条件,可以是显式的或者隐式的。一般有以下这两种显式办法:
- 设置递归深度(即递归到一定次数即截至,例如 DFS )
- 判断叶节点(到了某些特定元素或元素满足特定条件就不再递归下去而是有明确的返回值,例如快速排序)
ALL RIGHTS RESERVED © 2020 Teddy van Jerry
欢迎转载,转载请注明出处。