1、含义

迭代:利用已知的变量值,不断用变量的旧值递推新值,直到到达结束状态。

递归:函数直接或间接调用函数自身,直到满足终止条件,再逐层回归。

2、结构不同

迭代:迭代是环结构,从初始状态开始,每次迭代都遍历这个环,并更新状态,多次迭代直到到达结束状态。

递归:递归是树结构,从字面可以理解为重复“递推”和“回归”的过程,当“递推”到达底部时就会开始“回归”,其过程相当于树的深度优先遍历。

3、时间复杂度不同

迭代:迭代的时间复杂度可以通过查找循环内重复的周期数来发现。

递归:递归的时间复杂度可以通过根据前面的调用查找第 n 个递归调用的值来查找。因此,根据基情况找到目标情况,并根据基本情况求解,可以让我们了解递归方程的时间复杂度。

4、用法不同

迭代:迭代是代码块的重复。这涉及更大的代码大小,但时间复杂度通常小于递归的时间复杂度。

递归:递归涉及再次调用相同的函数,因此代码长度非常小。但是,正如我们在分析中看到的那样,当有相当数量的递归调用时,递归的时间复杂度可能会呈指数级增长。因此,在较短的代码中使用递归是有利的,但时间复杂度较高。

5、时间开销不同

迭代:迭代不涉及任何此类开销。

递归:与迭代相比,递归具有大量的开销。递归具有重复函数调用的开销,即由于重复调用同一函数,代码的时间复杂度增加了许多倍。

6、无限重复后果不同

迭代:由于迭代器赋值或增量错误,或在终止条件中,无限迭代将导致无限循环,这可能会导致也可能不会导致系统错误,但肯定会进一步停止程序执行。

递归:在递归中,由于指定基本条件时出现一些错误,可能会发生无限递归调用,该基本条件永远不会变为false,不断调用函数,这可能导致系统CPU崩溃。