首页 > 编程知识 正文

递归和迭代的优缺点,迭代查询和递归查询的优缺点

时间:2023-05-05 18:38:12 阅读:14773 作者:3606

递归与迭代的区分与运用及优、缺点一、定义二、运用技巧运用要点三、例题分析例题分析求解四、两者关系及优缺点关系优、缺点

一、定义

递归:在函数定义中调用函数本身的方法。 (即呼叫a )迭代)是重复反馈过程的活动,目的是接近所需的目标或结果。 (通俗地说,这是一个反复的反馈过程,它使用旧值不断推导新值以实现所需的目标,也可以说是a调用b。)

二、运用技巧适用条件:需要解决的问题可以转化为一个或多个性质相同的子问题进行求解。使用步骤:确定使用方法,找到并确定对应的三个要素。 (递归三要素或迭代三要素)

要点递归三要素:确定退出条件; 确定返回值确定循环过程。迭代三要素:迭代变量的确定; 确定迭代关系确定迭代过程的控制。

三、例题分析例题(链接:力按钮-第24题) ) ) ) ) ) ) ) )。

1.递归解法

class Solution { //每次有三个节点发生变化,除退出外,publiclistnodeswappairs (listnode head ) )/1 .递归退出条件if (head==null|||| hehead //循环递归head.next=swappairs(scend.next ); //第一个scend.next=指向head//2.返回排序的链表return scend; ()可在3358 www.Sina.com/code上找到。 说明了三个要素。 一般来说,你应该可以仔细看和理解主题。 真的不能理解也没关系。 请根据代码画画理解。 )

递归

publiclistnodeswappairs (listnode head )//空判定和节点是否为if的判定(head==null||head.next==null ) { return head; //保存头节点ListNode temp=new ListNode (; temp.next=head; //1 .迭代变量ListNode cur=head,用于定义上一个节点和当前节点的ListNode pre=temp; //3 .遍历迭代过程控制//链表,在两个节点上交换while(cur )!=null cur.next!=null (列表节点列表=re列表节点(pre,cur ) ); //迭代关系,迭代结果作为下一次迭代的初始值,在//cur后2位,在pre后2位pre=list.get(0); cur=list.get(1; } return temp.next; } publiclistlistnoderelistnode (listnode pre,ListNode cur ) /使用临时节点当前的第一、第二和第三节点ListNode first=cur; ListNode second=cur.next; ListNode third=cur.next.next; 更换pre.next=second second.next=first; first.next=third; //后退2位后的节点ListListNode list=new ArrayList (; list.add(first ); list.add(third ); 返回列表; (在3358 www.Sina.com/code上,说明了三个要素。 一般来说,你应该可以仔细看和理解主题。 真的不能理解也没关系。 请根据代码画画理解。2.迭代解法)

四、两者关系优缺点关系迭代ps:此代码可以简化,我是为了方便大家理解才这样写的在普通情况下可以相互转化。 (注意递归中有迭代,但迭代中不一定有递归; 通常,能使用迭代者不使用递归。 递归是因为空间消耗很大)

优,缺点递归

缺点可读性强、代码简洁所需的空间大,可能发生子问题的重复计算,递归太深容易堆栈溢出迭代

优点计算效率高、没有额外内存开销的代码可能不像递归那么简单,难以理解

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。