递归相关知识(java)版

这篇具有很好参考价值的文章主要介绍了递归相关知识(java)版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

递归

递归小题练习

 public static int f(int n){
        if(n==1){
            return 1;
        }
        return n*f(n-1);
    }

    public static void main(String[] args) {
        int f=f(5);
      }

递归反向打印字符串-c的话,就正序,java正逆无所谓

public static void f(int n,String str){
        if(n==str.length()) {
           return;
        }
        f(n+1,str);
        System.out.println(str.charAt(n));
    }

    public static void main(String[] args) {
        f(0,"abcd");
    }

递归二分查找

//递归二分查找
    /*
    递归子问题函数
Params:a-数组
target-待查找值
i-起始索引包含
j-结束宗引〔包含)
Returns:
找到返回索引
规不到返回-1
     */
/*
    private static int f(int []a,int target,int i,int j){
        if(i>j){
            return -1;
        }
        int m=(i+j)>>>1;
        if(target<a[m]){
            return f(a,target,i,m-1);
        }else if(a[m]<target){
            return f(a,target,m+1,j);
        }else {
            return m;
        }
    }
   public static int search(int[]a,int target){
        return f(a,target,0,a.length-1);
   }

递归冒泡排序

 //递归冒泡排序
/*    递归日泡排序
◆将数组划分成两部分[0-】+1.a.length-1]
            ◆左边[0…力是未排序部分
·右边0+1.a.length-1]是已排序分
·未排序区间内,相阳的两个元素比较,如果前一个大于后一个,则交换位置*/
    //j代表排序区域右边界
/*
  private static void bubble(int[]a,int j){
      if(j==0){
          return;
      }
      int x=0;
      for (int i = 0; i < j; i++) {
          if(a[i]>a[i+1]){
              int t=a[i];
              a[i]=a[i+1];
              a[i+1]=t;
              x=i;
          }
      }
      bubble(a,x);
  }

  public static void sort(int[]a){
      bubble(a,a.length-1);
  }

  public static void main(String[]args){
      int[]a={6,5,4,3,2,1};
      */
/*System.out.println(a.length-1);*//*

      System.out.println(Arrays.toString(a));
      bubble(a,a.length-1);
      System.out.println(Arrays.toString(a));
  }
*/
//递归-插入排序--区间插入排序

递归插入排序

    public static void sort(int[]a){
           insertion(a,1);
    }
    private static void insertion(int[]a,int low){
        if(low==a.length){
            return;
        }

        int t=a[low];//low是未排序区域的左边界
        int i=low-1;//已排序区域指针

        while (i>=0&&a[i]>t){//没有找到插入位置
            a[i+1]=a[i];
            i--;
        }

        //找到插入位置
        if(i+1!=low) {
            a[i + 1] = t;
        }
        insertion(a,low+1);
    }
}


递归求斐波那契额数列

//递归求斐波那契第n项
public class feibonaqie {
    public static int fibonacci(int n){
        int []cache=new int[n+1];
        Arrays.fill(cache,-1);
        cache[0]=0;
        cache[1]=1;//[0,1,-1,-1,-1,-1]
        return f(n,cache);
    }

    public static int f(int n,int[]cache){
     /*   if(n==0){
            return 0;
        }
        if(n==1){
            return 1;
        }*/
        if(cache[n]!=-1){
            return cache[n];
        }
        int x=f(n-1,cache);
        int y=f(n-2,cache);
        cache[n]=x+y;
        return cache[n];
    }

    /*public static void main(String[] args) {
        int f=f(8);
        System.out.println(f);
    }*/
}

递归时间复杂度分析

uTools_1689249786220

uTools_1689249766589文章来源地址https://www.toymoban.com/news/detail-555995.html

到了这里,关于递归相关知识(java)版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 递归相关知识2

    2024年02月16日
    浏览(22)
  • 从public static void main(String[] args)看如何构造数据

    java语言中public static void main(String[] args)里面的ages有什么作用? 在Java语言中, public static void main(String[] args) 是一个特殊的方法,它是Java程序的入口点。当你运行一个Java程序时,程序会从这个方法开始执行。这个方法的参数 String[] args 是一个字符串数组,用于传递命令行参数

    2024年02月12日
    浏览(84)
  • 【Java递归】一篇文章带你了解,什么是递归 ,递归的特点,递归应用场景,递归练习题

    博主: 東方幻想郷 专栏分类: Java | 从入门到入坟 🌟递归是一种在方法通过 调用自身 来解决某些问题的技术,它可以将一些问题,分为更小,更细类似的子问题,逐步解决, 直到问题被简化到某个基本情况 ,最后可以直接拿到答案。 递归是一种函数调用自身的方法 递归

    2024年02月06日
    浏览(40)
  • 【JAVA】方法的使用:方法语法、方法调用、方法重载、递归练习

    🍉内容专栏:【JAVA从0到入门】 🍉本文脉络:JAVA方法的使用,递归练习 🍉本文作者:Melon_西西 🍉发布时间 :2023.7.19 目录 1. 什么是方法(method) 2 方法定义 2.1 方法定义语法格式  例子:两个数相加 例子:判断某一年是否为闰年并调用判断函数  2.2 方法定义注意事项 3 方法

    2024年02月14日
    浏览(34)
  • 【概率论与数理统计】猴博士 笔记 p41-44 统计量相关小题、三大分布的判定、性质、总体服从正态分布的统计量小题

    题干: 总体X 有一些样本X1、X2、X3… 解法: 注意,S的分母是 n-1 接下来练习套公式: 例1:直接背公式。 例2: 解:除X,S,n外有其他位置数的就不是统计量。 则,D。 例3: 解: 用到的考点: 还有正态分布的方差。 答案:n-1 题型如下: 题解: 只有三种分布: X(卡方)

    2023年04月08日
    浏览(45)
  • API(Date类,SimpleDateFormat类,Calendar类,JDK8时间相关类,包装类,算法小题)

    JDK7时间相关类 JDK8时间相关类 包装类 综合练习 Collection集合 能够使用日期类输出当前日期 能够使用将日期格式化为字符串的方法 能够使用将字符串转换成日期的方法 能够说出8种基本类型对应的包装类名称 能够说出自动装箱、自动拆箱的概念 能够将字符串转换为对应的基

    2024年02月02日
    浏览(29)
  • 斐波那契数列、青蛙跳台阶、汉诺塔(C语言Java通用)、递归练习题

    Write once,Runanywhere. 🔥🔥🔥 本派文章详细斐波那契数列、青蛙跳台阶、汉诺塔(C语言Java通用)、递归练习题。 💥 💥 💥 如果你觉得我的文章有帮助到你,还请【关注➕点赞➕收藏】,得到你们支持就是我最大的动力!!! 💥 💥 💥 ⚡ 版权声明:本文由【马上回来了】原创、

    2023年04月08日
    浏览(29)
  • ChatGPT还是有点东西的-public static <T> List<T> Arrays.asList(T... a) {...}

    业务开发需要判断业务状态是否在30、40、50、60的集合内,所以写了以下代码 自我Review代码时,验证了下这行代码,发现状态为30时,仍然返回false。 在自我怀疑中调整代码,并验证,代码如下: 没想很明白,于是问了下ChatGPT。 Arrays.asList() 方法返回的结果类型取决于传入的

    2024年02月12日
    浏览(33)
  • Java中File类相关API的综合练习

    不爱生姜不吃醋⭐️⭐️⭐️ 声明: 🌻看完之后觉得不错的话麻烦动动小手点个赞赞吧👍 🌻如果本文有什么错误的话欢迎在评论区中指正哦💗 🌻与其明天开始,不如现在行动!💪 🌻大家的支持就是我最大的动力!冲啊!🌹🌹🌹 本文章是关于Java中File类相关API的综合

    2024年02月11日
    浏览(26)
  • 【Java基础】Java容器相关知识小结

    目录 0. 前言 1. Collection接口 1.1. List接口 1.1.1. ArrayList 1.1.2. LinkedList 1.1.3. Vector 1.1.4. Stack 1.2. Set接口 1.2.1. HashSet 1.2.2. LinkedHashSet 1.2.3. TreeSet 1.3. Queue接口 1.3.1. PriorityQueue 1.3.2. LinkedList 2. Map接口 2.1. HashMap 2.2. TreeMap 2.3. LinkedHashMap 3.常见用法——增/删/改/查/排序/容量 后记 参考文章

    2024年02月05日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包