码迷,mamicode.com
首页 > 其他好文 > 详细

十六 递归

时间:2018-11-21 12:29:35      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:strong   stat   image   vat   elements   判断   leetcode   struct   ack   

递归:本质上是将原来的问题转化为更小的同一问题。

递归的两个步骤:

  •   一、求解最基本问题
  •   二、把原问题转化成更小的问题,构建递归过程,把最小规模的解,构建称为原问题的解

 

示例:递归解决数组求和问题:

package com.lt.datastructure.LinkedList;
/**
 * 示例:利用递归为数组求和
 */
public class Sum {
  public static int sum(int[] arr){
      return sum(arr,0);
  }
  
  //计算arr[l...n]这个区间内所有数字的和
  private static int sum(int[] arr, int l){
      //一、递归的出口,求解最基本问题
      if(l == arr.length){
          return 0;
      }
      //二、把原问题转化为更小的问题,根据最小问题的答案构建原问题的答案
      return arr[l] + sum(arr,l+1);
  }
  
      public static void main(String[] args) {
          int[] arr = {1,2,3,4,5,6};
          System.out.println(sum(arr));
    }
}

利用递归解决LeetCode203:

链表的天然递归性:

0--->一个更短的链表,少了一个节点的原链表

技术分享图片

代码实现:

package com.lt.datastructure.LinkedList;

public class Solution3 {
   /*
    * 如果head为空,返回Null
    * res 为去掉第一个结点的子链表
    * 如果head的值为val,返回res,删除了第一个结点,后接子链表
    * 如果head的值不为val,保留,返回第一个结点,将head后的删除val的子链表接上
    * 即:head后指针指向res:head.next = res
    *     
    */
   public static ListNode removeElements(ListNode head, int val) {
      //空链表,或者链表遍历判断完成
      if(head == null){
          return null;
      }
      head.next = removeElements(head.next, val);
      return head.val == val? head.next : head;  
//      //将原问题转换成转换为更小的问题
//      ListNode res = removeElements(head.next,val);
//      //如果头结点为val,调用res删除,从下一个结点开始继续调用
//      if(head.val == val){
//          return res;
//      }else{
//       //如果头结点不为val,保留头结点,从下一个结点开始判断
//       //head.next指向去掉结点的子链表
//          head.next = res;
//          return head;
//      }
      
   }
       
    public static void main(String[] args) {
            int[] nums = {1,2,3,6,4,5,6};
            ListNode head = new ListNode(nums);
            System.out.println(head);
            ListNode res = removeElements(head, 6);
            System.out.println(head);
        }
    
}

 

十六 递归

标签:strong   stat   image   vat   elements   判断   leetcode   struct   ack   

原文地址:https://www.cnblogs.com/ltfxy/p/9993863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!