[数据结构]之递归

1. 认识递归

2. 链表和递归(宏观理解递归)

leetCode 203号问题:https://leetcode-cn.com/problems/remove-linked-list-elements/

首先,有一个removeElement(ListNode head,int val)函数可以将重复元素删掉,然后返回删除后的结果(红色部分)。

然后再将函数返回的结果(红色部分) 加上head来看,如果head.val == val;那么head需要删除,即答案就是函数返回结果;否则,答案是函数返回的结果加上head;

代码实现:

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode removeElements(ListNode head, int val) {
        
        if (head == null) 
            return head;
        
        ListNode res = removeElements(head.next,val);
        
        if (head.val == val)
            return res;
        else{
            head.next = res;
            return head;
        }
    }
}

 3. 递归的微观解读

链表递归的微观解读

猜你喜欢

转载自www.cnblogs.com/ytuan996/p/10702374.html