首页 > 编程语言 >java 递归

java 递归

时间:2024-09-09 18:37:03浏览次数:10  
标签:java 递归 int num static public

java 递归

目录

1 递归概念

  • 以编程的角度来看,递归指的是方法定义中调用方法本身的现象
  • 把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解
  • 递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算

2 递归的基本使用

package com.fcarey.recursion;

public class RecursionDemo {
    public static void main(String[] args) {
        int num = 100;
        System.out.println(getSum(num));
    }

    private static int getSum(int i) {
        //  方法的作用: 求 1- i 之间和
        if (i == 1) {
            return 1;
        } else {
            return i + getSum(i - 1);
        }
    }
}
  • 递归一定要有出口。否则内存溢出
  • 递归虽然有出口,但是递归的次数也不宜过多。否则内存溢出

3 示例: 递归求阶乘

package com.fcarey.recursion;

public class RecursionDemo2 {
    public static void main(String[] args) {
        int num = 5;
        System.out.println(factorial(num));
    }

    private static int factorial(int i) {
        // 定义一个方法,用于递归求阶乘,参数为一个int类型的变量
        if (i == 1) {
            return 1;
        } else {
            return i * factorial(i - 1);
        }
    }
}

标签:java,递归,int,num,static,public
From: https://www.cnblogs.com/f-carey/p/18405073

相关文章

  • Day05.Java流程控制1
    Java流程控制用户交互Scanner基本语法:Scanners=newScanner(System.in);通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()判断是否还有输入的数据next()一定要读取到有效字符后才可以结束输入对输入有效字符之前遇到的空......
  • Javaweb-数据库连接池
    packageDRUID;importcom.alibaba.druid.pool.DruidDataSourceFactory;importjavax.sql.DataSource;importjava.io.FileInputStream;importjava.sql.Connection;importjava.util.Properties;publicclassDruidDemo{publicstaticvoidmain(String[]args)thro......
  • Java并发编程15
    1、创建线程的有哪些方式继承Thread类创建线程类通过Runnable接口创建线程类通过Callable和Future创建线程通过线程池创建2、创建线程的三种方式的对比1、采用实现Runnable、Callable接口的方式创建多线程。**优势是:**线程类只是实现了Runnable接口或Calla......
  • java基础 -线程(基础)的 笔记
     581,多线程机制 因为需要敌人的坦克可以自由移动并发射子弹,我们的坦克可以移动并发射子弹,这些要用到线程的知识。   根据JConsole监控线程执行情况,发现,主线程执行完了,子线程还没有执行完,并不能表示当前进程死亡了,只有当所有的子线程执行完了,主进程才会结束。 真正......
  • 计算机毕业设计选题推荐-土地承包管理系统-Java/Python项目实战(亮点:数据可视化分析、
    ✨作者主页:IT研究室✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......
  • 计算机毕业设计选题推荐-流浪动物领养管理系统-Java/Python项目实战(亮点:数据可视化分
    ✨作者主页:IT研究室✨个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。☑文末获取源码☑精彩专栏推荐⬇⬇⬇Java项目Python项目安卓项目微信小程序项目......
  • Java 包装类(Wrapper)
    Java包装类(Wrapper)目录Java包装类(Wrapper)1包装类Wrapper概述2Integer类3自动装箱和拆箱4int和String类型的相互转换4.1int转换为String4.2String转换为int1包装类Wrapper概述作用:用于将原始类型(int,char,float等)转换为相应的对象。8个基本类型中的每......
  • java高级:单元测试
    单元测试:针对最小的功能单元(方法),编写测试代码对其进行正确性测试。Junit单元测试框架步骤: publicclassStringUtil{publicstaticvoidprintNumber(Stringname){if(name==null){System.out.println(0);return;//退出方法......
  • 数据库学习笔记(黑马-Javaweb课程)
    概述P80.课程介绍:数据库:存储和管理数据的仓库SQL:操纵做关系型数据库的编程语言数据库管理系统:DBMS,操纵和管理数据库的大型软件课程介绍:数据的的设计,数据库的操作,数据库的优化-索引P81.MySQL-概述-安装配置图文详述:MySQL的下载、安装、配置、使用_mysql下载-CSDN博客语......
  • Java入门:07.Java中的面向对象03
    11this关键字this关键字有两个作用第一个作用,用来调用重载的构造方法publicclassTest3{publicstaticvoidmain(String[]args){newUser();newUser("ls");newUser("ls","女");}}​classUser{Stringname;St......