首页 > 编程语言 >【算法 Java】递归,阶乘的递归实现,斐波那契数列的递归实现

【算法 Java】递归,阶乘的递归实现,斐波那契数列的递归实现

时间:2023-12-02 18:00:41浏览次数:42  
标签:Java Scanner 递归 int static 阶乘 java public

递归

定义:方法直接或间接地调用方法本身
思路:将大问题转化为一个与原问题相似的规模更小的问题
注意:递归死循环会导致栈内存溢出

一些使用递归求解的问题

阶乘

Factorial.java
import java.util.Scanner;

public class Factorial {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        int fac = getFactorial(x);
        System.out.println(fac);
    }

    private static int getFactorial(int x) {
        if(x == 1) return x;
        return x * getFactorial(x - 1);
    }
}

斐波那契数列

模板题:牛客-Fibonacci数列

Fibonacci.java
import java.util.Scanner;

public class Fibonacci {
    private static final int MOD = 10007;
    private static int[] res = new int[1000001];
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int x = in.nextInt();
        for(int i = 1; i <= x; ++ i ) {
            res[i] = -1;
        }
        fibonacci(x);
        System.out.println(res[x]);
    }
    private static int fibonacci(int x) {
        if(res[x] != -1) return res[x];
        if(x == 1 || x == 2) return res[x] = 1;
        return res[x] = (fibonacci(x - 1) + fibonacci(x - 2)) % MOD;
    }
}

标签:Java,Scanner,递归,int,static,阶乘,java,public
From: https://www.cnblogs.com/Eve7Xu/p/17871841.html

相关文章

  • java: 未报告的异常错误java.io.UnsupportedEncodingException; 必须对其进行捕获或声
    原问题代码:/**MD5编码相关的类@authorwangjingtao*/publicclassMD5{//首先初始化一个字符数组,用来存放每个16进制字符privatestaticfinalchar[]hexDigits={'0','1','2','3','4','5','6','7'......
  • 前端学习-JavaScript学习-js基础-API02-轮播图案例
    自己写的<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>Document</title>......
  • Java入门
    Java入门 Java帝国的诞生一场旷日持久的战争(1995)1972年C语言开始统治贴近硬件,运行极快,效率极高早期开发了很多操作系统,编译器,数据库,网络系统等指针和内存管理1982年C++诞生面向对象兼容C图形领域、游戏等我们要建立一个新的语言:语法有点像C没......
  • 【JavaSE】时间API
    JDK8版本之前的时间API(了解)Data类SimpleDateFormat类SimpleDateFormat类指定格式查API帮助文档即可SimpleDateFormatDemo.javaimportjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Date;publicclassSimpleDateFormatDemo{pu......
  • 学习笔记4:JavaSE & API(网络编程 & 多线程)
    1、java.net.Socket:(1)定义:Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过它获取两个流(一个输入一个输出),然后使用这两个流的读写操作完成与服务端的数据交互。(2)方法getInputStream():获取输入流,返回值是InputStream的一个子类实例。ge......
  • Java 初识
    Java初识一、三大版本:writeonce、runanywhere.JavaSE(核心):标准版(桌面程序,控制台开开)JavaME:嵌入式开发(手机,小家电)JavaEE:企业级开发(web端,服务器开发)二、JDK,JRE,JVMJDK:javadevelopmentkitJRE:javaruntimeenvironmentJVM:javavirtualmachine三、Java开发......
  • Java 8 仍被广泛使用,占比 50%
    调查中,更多的开发人员选择在生产中使用Java17,而不是Java11。Docker逐渐成为打包Web应用程序的首选,且Spring和SpringBoot的使用率遥遥领先。具体而言,开发者最常使用的 Java版本是 Java8,占比高达 50%;其次分别是 Java17(45%)、Java11(38%)以及 Java20(11%)......
  • java: 错误: 无效的源发行版:17
         ......
  • java练习:json字符串转map、arrayList
    使用依赖包:<dependency><groupId>com.alibaba.fastjson2</groupId><artifactId>fastjson2</artifactId><version>2.0.0</version></dependency>获取数据:packagecom.example......
  • Java零基础入门-输出
    前言Java是一种面向对象的编程语言,广泛用于开发各种应用程序。入门Java编程需要了解基本的语法规则和常见的编程思路,本文将从输出入手,介绍Java语言的基本语法和使用方法,为初学者提供帮助。摘要本文主要介绍Java语言的输出功能,包括各种输出方法的基本语法和使用方法,以及Java语言......