欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java斐波那契数列的顺序输出

程序员文章站 2022-06-09 13:02:52
斐波那契数列,即1、1、2、3、5......,从第三个数开始包括第三个数,都为这个数的前两个数之和,而第一第二个数都为1。 下面是java输出斐波那契数列的代码: 输出结果为: 这里最重要的是把已经计算过的值保存起来,再次遇到该值时直接返回,才不会重复计算,从而使得程序运行效率更高,也保证输出结果 ......

斐波那契数列,即1、1、2、3、5......,从第三个数开始包括第三个数,都为这个数的前两个数之和,而第一第二个数都为1。

下面是java输出斐波那契数列的代码:

import java.util.hashmap;

public class test{
    //定义一个hashmap来存储已经计算并且输出过的值
    public static hashmap<integer, integer> hashmap = new  hashmap<integer,integer>();
    
    //递归方法
    public static int  digui(int num) {
        //判断这个值是否已存在,若存在则直接返回该值
        if(hashmap.containskey(num)) {
            return hashmap.get(num);
        }
        if(num<=2) {
            system.out.print(1+" ");
            hashmap.put(num, 1);
            return 1;
        }
        int sum = digui(num-1)+digui(num-2);
        system.out.print(sum+" ");
        hashmap.put(num, sum);
        return sum;
    }
    public static void main(string [] args){
       digui(10);
  }
}

输出结果为:

1 1 2 3 5 8 13 21 34 55 

这里最重要的是把已经计算过的值保存起来,再次遇到该值时直接返回,才不会重复计算,从而使得程序运行效率更高,也保证输出结果不会重复。

其实斐波那契数列也可以不用递归来输出,或者说递归的效率反而不高,只不过这个知识点一直是用来练习递归的,所以这里我也就采用递归来输出,但是加了个缓存的hashmap,所以效率比一般的递归还是要快很多。

斐波那契数列别的输出方式输出代码如下:

import java.util.hashmap;

public class test{

    public static void print(int num) {
        //第一个数
        int first = 1;
        
        //第二个数
        int second = 1;
        
        //接收下一个数
        int sum = 0;
        
        for(int i = 1;i<=num;i++) {
            if(i==1 || i==2) {
                system.out.print(1+" ");
            }else {
                sum = first + second;
                system.out.print(sum+" ");
                first = second;
                second = sum;
            }
        }
    }
    public static void main(string [] args){
        print(10);
  }
    
}

输出结果如下:

1 1 2 3 5 8 13 21 34 55 

第二种方法时间复杂度只有o(num),效率还是非常高的。斐波那契数列还有很多其他的输出方式,这里只是讲几个实现的方法,就不一一列举其他的了。