从理论上说,所有的递归计算过程都可以转换为迭代计算过程。反之亦然,然而代价通常都是比较高的。但从算法结构来说,递归声明的结构并不总能够转换为迭代结构,原因在于结构的引申本身属于递归的概念,用迭代的方法在设计初期根本无法实现。

递归计算过程,通常容易理解,符合人类的思维习惯。但由于需要使用堆栈机制实现,其空间复杂度通常很高。对于一些递归层数深的计算,计算机会力不从心,空间上会以内存崩溃而告终。而且递归也带来了大量的函数调用,这也有许多额外的时间开销。所以在深度大时,它的时间复杂度和空间复杂度就都不好了。

阅读原文 »

5 收藏


直接登录

推荐关注