迭代和递归的区别

Z, ZLW 15368

迭代和递归的区别有:1、含义;2、结构不同;3、时间复杂度不同;4、用法不同;5、时间开销不同;6、无限重复后果不同。其中,迭代是利用已知的变量,不断用变量旧值递推新值直到结束;递归是函数直接或间接调用函数自身,直到满足终止条件再逐层回归。

1、含义

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

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

2、结构不同

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

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

3、时间复杂度不同

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

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

4、用法不同

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

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

5、时间开销不同

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

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

6、无限重复后果不同

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

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

拓展阅读

迭代/递归与普通循环的比较

  • 迭代与普通循环的区别:迭代时,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值;
  • 递归与普通循环的区别:循环是有去无回,而递归则是有去有回(因为存在终止条件)。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部