In actual implementation, rather than a pure recursive function (single check for base case, otherwise recursive step), a number of modifications may be made, for purposes of clarity or efficiency. These include:
* Short-circuiting the base case, aka "Arm's-length recursion" (at bottom)
−
* Hybrid algorithm (at bottom) – switching to a different algorithm once data is small enough
* 包装器函数(在顶部)
* 包装器函数(在顶部)
第804行:
第798行:
* 混合算法(在底部)——一旦数据足够小,就切换到另一个的算法
* 混合算法(在底部)——一旦数据足够小,就切换到另一个的算法
−
On the basis of elegance, wrapper functions are generally approved, while short-circuiting the base case is frowned upon, particularly in academia. Hybrid algorithms are often used for efficiency, to reduce the overhead of recursion in small cases, and arm's-length recursion is a special case of this.