递归和迭代的区别

递归和迭代的区别最近刷题经常会碰到迭代或递归解法 容易混淆 搜索整理如下 1 含义不同递归是重复调用函数自身实现循环

大家好,欢迎来到IT知识分享网。

最近刷题经常会碰到迭代或递归解法,容易混淆,搜索整理如下

1、含义不同

递归是重复调用函数自身实现循环。遇到满足终止条件的情况时逐层返回来结束

迭代是函数内某段代码实现循环,循环代码中参与运算的变量同时是保存结果的变量,当前保存的结果作为下一次循环计算的初始值。迭代则使用计数器结束循环。

2、结构不同

递归与迭代都是基于控制结构,都涉及重复结构

迭代用重复结构,迭代显式使用重复结构

递归用选择结构,递归通过重复函数调用实现重复

3、终止条件不同

迭代在循环条件失败时终止,迭代一直修改计数器,直到计数器值使循环条件失败;

递归在遇到基本情况时终止,使用计数器控制重复的迭代和递归都逐渐到达终止点(递归不断产生最初问题的简化副本,直到达到基本情况。)

4、基础案例:反转链表(leetcode链接)

迭代解法:

class Solution: def reverseList(self, head: ListNode) -> ListNode: # pre:前节点 # cur:当前节点 pre = None #标记前置空节点 cur = head #标记链表起始位置 while cur is not None: #当当前节点有nexc值时候 next=cur.next #临时参数next存储cur的后置 cur.next=pre #把cur的指向改为向前 pre=cur #把pre赋值为cur的值(pre后移) cur=next #把cur赋值为next的值(cur后移) return pre #返回pre(头节点)

递归解法:

def reverseList(self, head: ListNode) -> ListNode: if head is None or head.next is None: #判断是否为终止条件,如果不是执行下方替换 return head pre = self.reverseList(head.next) head.next.next = head head.next = None return pre

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/141092.html

(0)
上一篇 2025-05-22 14:26
下一篇 2025-05-22 14:33

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信