首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >算法(一) 递归

算法(一) 递归

作者头像
宇宙无敌暴龙战士之心悦大王
发布2022-01-10 11:22:00
发布2022-01-10 11:22:00
3640
举报
文章被收录于专栏:kwaikwai

递归的核心:对于一个节点来说,它只需要知道它之后的所有节点操作之后的结果就可以了。

个人总结三要素:

  • 确定递归函数的参数和返回值。
  • 确定终止条件。
  • 确定单个递归的内容。

例题

1,反转链表(递归,双指针 )

来自 LeetCode206

补充:

代码语言:javascript
复制
* public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
解法

1,双指针/迭代

在双指针文章里。

2,递推

代码语言:javascript
复制
class Solution {
    public ListNode reverseList(ListNode head) {
        return reverse(null,head);
    }

    public ListNode reverse(ListNode pre,ListNode cur){
        if(cur == null)
            return pre;
        ListNode temp = cur.next;
        cur.next = pre;
        return reverse(cur,temp);
    }
}

pre为前项,cur为当前指针,temp为后项。

理解(不保证正确)

1,递归想对于迭代,代码会更加清晰一些。

2,递归分两种

  • 一种是return 递归式,求的是最后一个递归式的结果,作为整个函数的结果。
  • 一种是过程中递归式,更多是类似于动态规划,每一层递归都是给前一阵作为实现的基石。
  • 递归思想中,不应该考虑每一步递归的过程,这样大概率出错。应该考虑当前递归我需要得到的结果就可以了。(重点)

3,有关链表的题目,应该在本子上进行画图,会让思路更加清晰。

2,合并两个有序链表

来自LeetCode 21

解法
代码语言:javascript
复制
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
        if(l1 == null) return l2;
        if(l2 == null) return l1;
        if(l1.val>l2.val)
        {
            l2.next = mergeTwoLists(l1,l2.next);
            return l2;
        }
        else
        {
            l1.next = mergeTwoLists(l1.next,l2);
            return l1;
        }
    }
}
理解

1,想到用递归做题有点难,想到后就很容易解决。

3,二叉树遍历

在算法(八)那篇文章里。

很重要。(不过递归算法太简单不是很重要)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-08-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 例题
    • 1,反转链表(递归,双指针 )
      • 解法
      • 理解(不保证正确)
    • 2,合并两个有序链表
      • 解法
      • 理解
    • 3,二叉树遍历
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档