首页 > 编程语言 >递归相关知识(java)版

递归相关知识(java)版

时间:2023-07-13 21:46:25浏览次数:36  
标签:cache java 递归 int 知识 static return public

递归

递归小题练习

 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

标签:cache,java,递归,int,知识,static,return,public
From: https://www.cnblogs.com/cgy-chen/p/17552279.html

相关文章

  • 每日汇报 第三周第五天 JAVA集合
    今日所学:掌握Collection接口的常用方法;掌握Set接口的HashSet类和TreeSet类的异同点;掌握如何使用Iterator迭代器遍历集合中的元素;掌握List接口的两个重要方法get(intindex)和set(intindex,Objectobj);掌握Set接口的ArrayList类与LinkedList类的异同点;掌握Map接口的常用方法;......
  • Java5泛型的用法,T.class的获取和为擦拭法站台
    Java5的泛型语法已经有太多书讲了,这里不再打字贴书。GP一定有用,不然Java和C#不会约好了似的同时开始支持GP。但大家也清楚,GP和Ruby式的动态OO语言属于不同的意识形态,如果是一人一票,我想大部分的平民程序员更热衷动态OO语言的平白自然。但如果不准备跳槽到支......
  • 学习java第一天
    Markdown学习标题#+标题字体Hello,world!Hello,World!Hello,World!Hello,World!Hello,World!引用人生>分割线***---图片超链接点击跳转到博客园列表ABCABC表格姓名性别生日悦女2004.10.7代码​ 翻译搜索复制......
  • 设计模式-建造者模式在Java中使用示例
    场景建造者模式复杂对象的组装与创建没有人买车会只买一个轮胎或者方向盘,大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。如何将这些部件组装成一辆完整的汽车并返回给用户,这是建造者模式需要解决的问题。建造者模式又称为生成器模式,它是一种较为复杂、使用......
  • spring bean 的属性为 java.util.Properties 时如何初始化该属性
       publicclassFooBean{privatejava.util.Propertiesattr;publicjava.util.PropertiesgetAttr(){returnattr;}publicvoidsetAttr(java.util.Propertiesattr){this.attr=attr;}} <beanid=......
  • Java如何将数组转换为集合?
    在Java中,可以使用`Arrays`类的`asList()`方法将数组转换为集合。该方法接受一个数组作为参数,并返回一个包含数组元素的固定大小的列表。以下是将数组转换为集合的示例:String[]array={"item1","item2","item3"};List<String>list=Arrays.asList(array);在上述示例中,......
  • 基于GPT搭建私有知识库聊天机器人(五)函数调用
    文章链接:基于GPT搭建私有知识库聊天机器人(一)实现原理基于GPT搭建私有知识库聊天机器人(二)环境安装基于GPT搭建私有知识库聊天机器人(三)向量数据训练基于GPT搭建私有知识库聊天机器人(四)问答实现OpenAI在6月13日发布了几个重磅更新,其中包括:开放了16k上下文的GPT-3.5-Turbo模型......
  • JavaScript 中获取数组最后一个元素3种方法及性能
    当需要从JavaScript中的数组中获取最后一个元素时,有多种选择,本文将提供3种可用方法。1.数组length属性length属性返回数组中元素的数量。从数组的长度中减去1得到数组最后一个元素的索引,使用它可以访问最后一个元素。从长度中减去1的原因是,在JavaScript中,数组索引......
  • 知识蒸馏最新进展
    前言 本文聚焦于知识蒸馏的近期进展。本文转载自北邮GAMMALab作者|郭雨心仅用于学术分享,若侵权请联系删除欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。CV各大方向专栏与各个部署框架最全教程整理【CV技术指南】CV全......
  • java 加载bean
    @Service@AutowiredprivateActionLogAspectactionLogAspect;@RestController@RequiredArgsConstructorprivatefinalImComplaintServiceimComplaintService;@Slf4j@RequiredArgsConstructor@ComponentfinalActionLogAspectactionLogAspect;......