递归总结

news2024/12/25 8:51:40

 递归每次自己调用自己,每次调用自己后函数的数据会较上次缩减,而且最后缩减至无需继续递归。内层函数调用完成,外层函数才算调用完成

  n的阶乘伪代码

外层必须逐级向里面递,最后再向外归。

public class 递归_02 {
    public static void main(String[] args) {
        String s =new Scanner(System.in).next(); //链式编程
       f(s,0);

    }
    public static  void f(String s,int n){
       if (n==s.length()){
            return;//到字符串结尾的下一个结束,然后返回
    }
       f(s,n+1); //执行他的下一个内容,
        System.out.print(s.charAt(n));
    }
}

递归用来解决二分问题 

public class 递归_二分查找 {
    public static void main(String[] args) {
   int arr[]={1,2,3,4,5};
        System.out.println(f(arr,5,0, arr.length-1));
    }
    public  static  int f(int []a ,int target,int i,int j){
        if (i>j){
            return -1; //结束的条件
        }
        int mid=(i+j)>>1;
        
        if (target<a[mid]){
            return f(a,target,i,mid-1);
        } else if (target>a[mid]) {
            return f(a,target,mid+1,j);

        }else {
            return mid;
        }
    }
}

递归实现冒泡排序

public class 递归_冒泡排序 {
    public static void main(String[] args) {
      int [] arr={1,5,2,4,9,10,14,11};
        System.out.println(Arrays.toString(arr));
      bubble(arr,arr.length-1);
        System.out.println(Arrays.toString(arr));
    }
    //
    public static void bubble(int [] a,int j){
         if (j==0){
             //到了第一个元素,就剩下一个元素了,不用进行排序
             return;
         }
         int x=0; //
        for (int i = 0; i < j; i++) { //不能等于j,因为有一个i+1;
            if (a[i]>a[i+1]){ //交换变量需要找一个中间量,tempt
                int tempt=a[i];
                a[i]=a[i+1];
                a[i+1]=tempt;
                x=i;
            }
            //还要进行递归排序
            bubble(a,x);  //引入x优化算法
            

            //优化算法内容
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/751213.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ITIL 4—监控和事态管理实践

1 关于本文 本文为监控和事态管理实践提供了实用指南。它分为五个主要部分&#xff0c;内容包括&#xff1a; 有关实践的一般信息监控和事态管理的流程和活动及其在服务价值链中的角色监控和事态管理中涉及的组织和人员支持监控和事态管理的信息和技术合作伙伴和供应商对监控…

A_003.adb常用命令使用介绍

1.adb工作原理说明 adb命令是调试控制手机过程中用的比较多工具。adb是一个C/S架构的应用程序,主要由三部分组成: (1)、运行在电脑端的adb client程序 在电脑终端中执行adb --help可以查看当前支持的adb命令。当在命令行执行程序adb相关命令的时候,adb程序尝试连接到主机上…

VUE根据图片做图片形状的词云效果

VUE根据图片形状制作词云效果 针筒图片&#xff1a;&#xff08;是png&#xff09; 效果图&#xff1a;&#xff08;文章底部有完整代码&#xff09; 限制横竖显示&#xff0c; 在两种颜色中随机。 爱心图片&#xff1a;&#xff08;是白底的png&#xff09; 效果图&#xff…

什么是CI/CD?让你的项目变得更加敏捷!

在今天这个快速变化的时代&#xff0c;开发者们需要与时俱进&#xff0c;不断提升自己的工作效率。在这篇文章里&#xff0c;将一起探讨如何使用CI/CD和Github Action让你的项目更加高效&#xff0c;快速响应市场变化。 一、什么是CI&#xff1f; CI&#xff08;持续集成&…

【Java面试丨并发编程】线程的基础知识

一、进程与线程的区别 1. 进程 程序是由指令和数据组成&#xff0c;但这些指令要运行&#xff0c;数据要读写&#xff0c;就必须将指令加载至CPU&#xff0c;数据加载至内存在指令运行过程中还需要用到磁盘、网络等设备进程就是用来加载指令、管理内存、管理IO的当一个程序被…

青岛大学_王卓老师【数据结构与算法】Week05_08_顺序栈的操作2_学习笔记

本文是个人学习笔记&#xff0c;素材来自青岛大学王卓老师的教学视频。 一方面用于学习记录与分享&#xff0c; 另一方面是想让更多的人看到这么好的《数据结构与算法》的学习视频。 如有侵权&#xff0c;请留言作删文处理。 课程视频链接&#xff1a; 数据结构与算法基础…

C++学习 内存分区模型

内存分区模型 C程序在执行时&#xff0c;将内存大方向划分为4个区域 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理。全局区&#xff1a;存放全局变量和静态变量以及常量。栈区&#xff1a;由编译器自动分配释放&#xff0c;存放函数的参数值&#…

【TI毫米波雷达笔记】DCA1000EVM+mmWave Studio数据采集的MIMO模式设置(多天线发射工作模式)

【TI毫米波雷达笔记】DCA1000EVMmmWave Studio数据采集的MIMO模式设置&#xff08;多天线发射工作模式&#xff09; 以IWR6843AOP为例 其为3发4收的雷达 MIMO模式有两种 TDM-MIMO和BPM-MIMO TDM-MIMO模式&#xff08;时分复用&#xff09; TDM-MIMO模式是最简单和常用的MIM…

Vector - CANoe - CAPL文件加密

目录 为什么会有CAPL文件加密需求? 加密文件介绍 “*.can”和“*.cin” 文件创建 <

win11安装virtual box和vagrant,附带centos7镜像

环境检查 1. 开启CPU虚拟化 修规bios配置 configuration -> Intel Virtual Technology 改为 enabled 2. 关闭hyper-v 以管理员启动 powershell&#xff0c;执行&#xff1a; bcdedit /set hypervisorlaunchtype off 3. 关闭wsl虚拟机 以管理员启动 powershell&#x…

C#探索之路(10):实现一个简单应用的功能——志愿填报

C#探索之路(10)&#xff1a;实现一个简单应用的功能——志愿填报 文章目录 C#探索之路(10)&#xff1a;实现一个简单应用的功能——志愿填报1、前景&#xff1a;2、需求分析3、功能实现3.1、界面交互-输入3.2、界面交互-输出 3、代码示例&#xff1a;4、效果图&#xff1a;5、总…

利用缓存模拟进度条(c实现)

代码如下&#xff1a; #include <stdio.h> #include <Windows.h>int main() {int total 100;int progress 0;char progressBar[101] {};while (progress < total) {progressBar[progress] #;printf("[%-100s] %d%%", progressBar, progress);ffl…

音视频开发实战03-FFmpeg命令行工具移植

一&#xff0c;背景 作为一个音视频开发者&#xff0c;在日常工作中经常会使用ffmpeg 命令来做很多事比如转码ffmpeg -y -i test.mov -g 150 -s 1280x720 -codec libx265 -r 25 test_h265.mp4 &#xff0c;水平翻转视频&#xff1a;ffmpeg -i src.mp4 -vf hflip -acodec copy …

爬虫相关知识与面试题目

常见的反爬虫和应对方法 参考:https://www.cnblogs.com/bsdr/p/5151891.html 0x01 常见的反爬虫 这几天在爬一个网站&#xff0c;网站做了很多反爬虫工作&#xff0c;爬起来有些艰难&#xff0c;花了一些时间才绕过反爬虫。在这里把我写爬虫以来遇到的各种反爬虫策略和应对的…

判断 Mac显卡 mps 是否可以正常运行

文章目录 Mac MPS介绍判断 Mac mps 是否可以正常运行Mac 指定 mps 进行推理示例Mac M1 GPU 训练 相比 CPU 速度提升对比&#x1f4d9; 开心搬砖每一天 Mac MPS介绍 使用 Apple 的 Metal Performance Shaders (MPS) 作为 PyTorch 的后端来启用加速 GPU 训练。 MPS 后端扩展了 P…

SpringBoot源码分析(5)--createApplicationContext创建应用上下文

文章目录 一、前言二、ApplicationContext简述2.1、Spring IOC容器实现方式 三、createApplicationContext/创建应用上下文3.1、DefaultResourceLoader3.2、AbstractApplicationContext3.3、GenericApplicationContext3.3.1、SimpleAliasRegistry3.3.2、DefaultSingletonBeanRe…

ARM中栈的种类与运用

1. 栈的概念 栈&#xff0c;本身是一段内存&#xff0c;程序运行时用于保存一些临时数据&#xff0c;如局部变量、参数、返回地址等等。 学习了数据结构&#xff0c;对栈的概念相信大家都不陌生&#xff0c;后进先出的数据结构&#xff0c;即最后进栈的元素最先出栈。但是在C语…

用html+javascript打造公文一键排版系统5:二级标题排版

公文中二级标题的一般以&#xff08;X&#xff09;标注&#xff08;其中X为由"一二三四五六七八九十"中的字符组成的字符串&#xff09;&#xff0c;用楷体字加粗。 首先我们要判断一段文字是否包含二级标题&#xff0c;最简单的方法 就是判断文字中的头一个字符是否…

springBoot整合二维码

一、引入坐标 <!-- 二维码 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.2.1</version></dependency><dependency><groupId>com.google.zxing</group…

Unhandled error during execution of component event handler at

Unhandled error during execution of component event handler at 执行组件事件处理程序期间出现未处理的错误 在 意思就是有些地方的值用早了,在没有数据之前就使用了 我这次报错是子组件的表单校验 调用事件就报错了 解决方法 setTimeout(() > { //调用方法 }, 0); 就是…