算法设计与分析(Java实现)—— 动态规划(入门)斐波那契数列_java.用动态规划法求解斐波那契问题-程序员宅基地

技术标签: 算法  # 数构+算法+设计分析  java  leetcode  动态规划  数据结构  

斐波那契数列

  • 递归
  • 记忆化递归
  • 动态规划
public class dp {
    
    //# 递归的的斐波那契数列解决方法 时间复杂度O(2^n)
    public  long fibonacci(int n) throws Exception{
    
        //特殊情况,分开讨论
        if (n == 1 || n == 2) {
     return 1; }
        if (n > 2) {
     return fibonacci(n - 1) + fibonacci(n - 2); }//递归调用
        return -1;              //如果输入错误的n,一律返回-1
    }

//    # 记忆化搜索
    public static long fibonacci1(int n) {
    
        int[] memo = new int[n + 1]; // 自定义数组的默认值都为0
        if (n == 0) {
     return 0; }
        if (n == 1) {
     return 1; }
        // 当数组的值为0时,才进行迭代
        if (memo[n] == 0) {
     memo[n] = (int) (fibonacci1(n - 1) + fibonacci1(n - 2)); }
        return memo[n];
    }
//    # 动态规划 先解决小数据量的 再层层递推的解决大数据量级的问题 时间复杂度O(n)
    public static long fibonacci2(int n){
    
        long f0 = 1, f1 = 1;
        long f2 = 0;
        for(long i = 3; i <= n; i++){
    
            f2 = f0 + f1;
            f0 = f1;
            f1 = f2;
        }
        return f2;
    }
    
    /**
     * 阶乘
     * @param
     * @return
     */
    /*public int factorial(int n) throws Exception {
        if (n < 0) {
            throw new Exception("负数没有阶乘");
        } else if (n <= 1) {
            return 1;
        } else {
            return n * factorial(n - 1);
        }
    }*/

    public static void main(String[] args) {
    
//        System.out.println(fibonacci(100));
//        System.out.println(fibonacci1(100));
        System.out.println(fibonacci2(30));


    }

}
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_46344594/article/details/116519798

智能推荐

Matlab数据处理——数据的保存和读取方法操作_matlab中的 store-程序员宅基地

文章浏览阅读2.3k次。原文链接:https://blog.csdn.net/misayaaaaa/article/details/533964031:dlmwrite()函数保存成txt文件使用方法:dlmwrite('filename', M)使用默认分隔符“,”将矩阵M写入文本文件filename中;dlmwrite('filename', M, 'D')..._matlab中的 store

你的网站还在使用HTTP? 免费升级至HTTPS吧

http升级到https的关键是安装部署ssl证书,本文阐述了从证书申请到启用https的详细过程

关于Kotlin

在数据科学和机器学习领域,Kotlin的强大类型推断能力和函数式编程特性,使得数据处理和算法实现更加简洁和可读。此外,Kotlin还可用于游戏开发,特别是移动游戏开发,以及嵌入式系统的开发。它几乎可以运行在任何Java语言可以运行的地方,但相比Java,Kotlin更加简洁、高效和安全。它不仅可以编译成Java字节码,在Java虚拟机上运行,还可以编译成JavaScript,以便在没有JVM的设备上运行。此外,Kotlin还可以编译成二进制代码,直接运行在机器上,如嵌入式设备或iOS。

同步(Synchronous)和异步(Asynchronous)的理解和区别讲解-程序员宅基地

文章浏览阅读1.6w次,点赞28次,收藏70次。同步(Synchronous)和异步(Asynchronous)同步和异步是什么?怎么理解下呢?同步 :你去商城买东西,你看上了一款手机,能和店家说你一个这款手机,他就去仓库拿货,你得在店里等着,不能离开,这叫做同步。同步“ 就好比:你去外地上学(人生地不熟),突然生活费不够了;此时你决定打电话回家,通知家里转生活费过来,可是当你拨出电话时,对方一直处于待接听状态(即:打不通,联系不上),为了拿到生活费,你就不停的 oncall 、等待,最终可能不能及时要到生活费,导致你今天要做的事都没有完成,而白白

java实现断点续传、分片上传、文件快传_java 实现接收分片上传数据-程序员宅基地

文章浏览阅读456次,点赞3次,收藏6次。【代码】java实现断点续传、分片上传、文件快传。_java 实现接收分片上传数据

gcc4.0的cc1去哪了?-程序员宅基地

文章浏览阅读630次。cc1 is an internal part of gcc (the C front-end), usually found in /usr/libexec/gcc/i686-pc-linux-gnu/4.0.2

随便推点

C++11:shared_ptr循环引用问题

详细介绍了引用循环出现的场景及为什么会出现引用循环,以及如何解决引用循环,引入了weak的概念。

Spring Boot的热部署工具“AND”Swagger测试工具

指的是在项目无需重启的情况下,只需要刷新页面,即可获得已经修改的样式或功能。要注意该工具一般用于开发环境,在生产环境中最好不要添加这个工具。对于无需重启便可刷新这么方便的工具,在项目中该如何使用:在spring boot 项目中使用工具的方法就是引入相关依赖,热部署工具的依赖如下:

SpringIoc的注入原理_springioc注入原理-程序员宅基地

文章浏览阅读589次。SpringBean的注入原理spring是在配置类需要指定扫描包,然后递归得到下面所有的文件;(springboot默认启动类和兄弟目录下面所有的包文件)包名+文件名=类全限定名;calss.from加载到内存当中,得到字节码(class);判断这个类的脑门上是否有注解(就是类的头顶上),有注解的话,就把这个类先put到Map里面(ResourcesMap和autowiredMap各一..._springioc注入原理

ES6模块化使用方法_如何用es6模块化项目-程序员宅基地

文章浏览阅读334次。目录结构a.js对外导出对象let name = 'j'let age = 18let sex = 'm'// 导出对象export { name, age}// 默认导出export default sexb.js// 导入a.js中导出对象import {name, age} from './a.js'// 导入a.js中默认导出import sex from './a.js'console.log(name, age, sex)index_如何用es6模块化项目

高中教学分析系统数据可视化探索【可视化实战案例】_对高中教学系统进行可视化分析,-程序员宅基地

文章浏览阅读809次。教育行业中大数据分析的主要目的包括改善学生成绩、服务教务设计、优化学生服务等。而学生成绩中有一系列重要的信息往往被我们常规研究所忽视。通过大数据分析和可视化展示,挖掘重要信息,改善 学生服务,对于教学改进意义重大。美国教育部门构建“学习分析系统”,旨在向教育工作者提供了解学生到底是在怎样学习的更好、更好、更精确信息。利用大数据的分析学习能够向教育工作者提供有用的信息,从而帮助其回答众多不易回答的现实问题。_对高中教学系统进行可视化分析,

【BZOJ】4726 [POI2017] Sabota?_某个公司有n个人, 上下级关系构成了一个有根树。其中有个人是叛徒(这个人不知道是-程序员宅基地

文章浏览阅读362次。【BZOJ】4726 [POI2017] Sabota?Description某个公司有n个人, 上下级关系构成了一个有根树。其中有个人是叛徒(这个人不知道是谁)。_某个公司有n个人, 上下级关系构成了一个有根树。其中有个人是叛徒(这个人不知道是