递归
请注意,使用递归会对代码产生严重影响,因为每个递归函数调用都将附加到堆栈。如果调用太多,则可能导致 StackOverflow 异常。大多数自然递归函数可以写成 for
,while
或 foreach
循环结构,虽然看起来不那么豪华或聪明会更有效率。
总是三思而后行 - 仔细使用递归 - 知道你为什么使用它:
- 当你知道递归调用的数量不是过多时,应该使用递归 **
- 过多的手段,取决于可用的内存量
- 使用递归是因为它更清晰,更清晰的代码版本,它比迭代或基于循环的函数更具可读性。通常情况就是这样,因为它提供了更清晰,更紧凑的代码(也就是更少的代码行)。
- 但请注意,效率可能会低一些! 例如,在 Fibonacci 递归中,为了计算序列中的第 n 个数,计算时间将呈指数增长!
如果你想了解更多理论,请阅读: