【基础算法】- 个人认为最快的 Fibonacci 程序

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

public class Fibonacci {

    

    private
static Map<Long,Long> map = new
HashMap<Long,Long>();

    static{

        map.put(0L, 1L);

        map.put(1L, 1L);

    }

    

    public
static void main(String[] args) {

        

        long
t = System.currentTimeMillis();

        Fibonacci fi = new
Fibonacci();

        System.out.println(fi.cal(36L,map));

        System.out.println(System.currentTimeMillis() - t);

        System.out.println();

        t = System.currentTimeMillis();

        fi = new
Fibonacci();

        System.out.println(fi.cal(36L));

        System.out.println(System.currentTimeMillis() - t);

    }

    

    public
Long cal(Long n, Map<Long,Long> map){

        

        if(map.get(n) != null){

            return
map.get(n);

        }else{

            long
i = cal(n-1,map) + cal(n-2,map);

            map.put(n, i);

            return
i;

        }

    }

【基础算法】- 个人认为最快的 Fibonacci 程序

时间: 2024-10-27 19:26:39

【基础算法】- 个人认为最快的 Fibonacci 程序的相关文章

算法学习#02--斐波那契Fibonacci数列算法优化

算法列表 本文从时间效率和占用空间内存角度评估,找出最优算法. 经典递归算法Recursive algorithm(很慢) 动态存储算法Dynamic programming(慢) 矩阵幂算法Matrix exponentiation(快) 倍数公式算法Fast doubling(很快) 倍数公式算法+快速乘法Fast doubling with Karatsuba(最快) Fibonacci数列 1.数列介绍 斐波那契数列(Fibonacci sequence),又称黄金分割数列.因数学家列昂

基础算法之排序--快速排序

1 /************************************************************************************** 2 * Function : 快速排序 3 * Create Date : 2014/04/21 4 * Author : NTSK13 5 * Email : [email protected] 6 * Copyright : 欢迎大家和我一起交流学习,转载请保持源文件的完整性. 7 * 任何单位和个人不经本人允许不

算法录 之 基础算法

这一篇文章主要说说一些基础算法,这些算是很多其他算法的基石. 主要包括  模拟,暴力,枚举,递归,贪心,分治. 1,模拟: 顾名思义,模拟就是...饿,模拟,有一些题目就是给你一些步骤,然后你写代码一步步去模拟那些步骤就行.这类题目主要属于基础题,但是当然如果需要模拟的步骤足够恶心的话,还是比较麻烦的... 具体模拟的例子在之后的练习中会遇到的,按照题目要求一步步做就行,一般算法难度比较小. 2,暴力: 顾名思义,暴力就是...饿,暴力.比如说题目让从平面上的10个点中取三个点,让他们形成的三角

CUDA系列学习(五)GPU基础算法: Reduce, Scan, Histogram

喵~不知不觉到了CUDA系列学习第五讲,前几讲中我们主要介绍了基础GPU中的软硬件结构,内存管理,task类型等:这一讲中我们将介绍3个基础的GPU算法:reduce,scan,histogram,它们在并行算法中非常常用,我们在本文中分别就其功能用处,串行与并行实现进行阐述. 1. Task complexity task complexity包括step complexity(可以并行成几个操作) & work complexity(总共有多少个工作要做). e.g. 下面的tree-str

【基础算法】基础算法【转载】

1. 最大公约数 问题:求两个自然数的最大公约数. 分析:这个是基础的数学问题,最大公约数指两个数字公共的约数中最大的,例如数字6的约数有1.2.3.6,数字9的约数有1.3.9,则数字6和数字9的公共约数有1和3,其中3是最大的公约数. 第一种思路:从1开始循环,每次把符合要求(即同时是两个数字的约数)的值都存储起来,那么最后一个存储起来的就是最大的约数. E:\博客-基础算法-代码\1_a_max_divisor.php: [php] view plain copy <?php /** * 

C语言的10大基础算法

C语言的10大基础算法 算法是一个程序和软件的灵魂,作为一名优秀的程序员,只有对一些基础的算法有着全面的掌握,才会在设计程序和编写代码的过程中显得得心应手.本文是近百个C语言算法系列的第二篇,包括了经典的Fibonacci数列.简易计算器.回文检查.质数检查等算法.也许他们能在你的毕业设计或者面试中派上用场. 1.计算Fibonacci数列 Fibonacci数列又称斐波那契数列,又称黄金分割数列,指的是这样一个数列:1.1.2.3.5.8.13.21. C语言实现的代码如下: /* Displ

九章算法 基础算法 强化算法 系统设计 大数据 安卓 leetcode 高清视频

leetcode 直播视频讲座录像 九章算法视频录像,PPT 算法班,算法强化班,Java入门与基础算法班,big data项目实战班,Andriod项目实战班 九章算法下载 九章算法面试 九章算法leetcode 九章算法答案 九章算法mitbbs 九章算法班 九章算法ppt 九章算法录像 九章算法培训 九章算法微博 leetcode 视频 九章算法偷录 算法培训 算法班课程大纲: 1 从strStr谈面试技巧与Coding Style(免费试听) 2 二分搜索与旋转排序数组 Binary S

最最最最最最最最基础的C---C简介和基础算法

C简介 C是一门程序设计语言,面向过程的语言.于1972至1973年设计出来的语言. C具有32个关键字,9种控制语句,34种运算符. 函数是C的基本单位:一个C程序的执行总是从main函数开始的. C程序运行步骤:源程序--编译-->目标文件--执行-->可执行目标程序. 基础算法 完整的程序设计=数据结构+算法+程序设计方法+语言工具 算法特效: 1.有穷性:一个算法包含有限的操作步骤 2.确定性:确定算法的每一个步骤都是确定的 3.有零个或多个输入 4.有一个或多个输出 5.有效性:算法

基础算法

c语言基础算法大全 冒泡排序 选着排序 插入排序 快速排序 shell排序. 合并排序. 下面是各个排序算法的实现: 冒泡排序 void bobuleSort(int a[], int len) { int i,j,flag =1; for(i = 0; i<len; i++) { for(int j =len-1; j>i; j--) { if(a[j] <= a[i]) { int tmp = a[j]; a[j] = a[i]; a[i] = tmp; flag = 0; } }