zoukankan      html  css  js  c++  java
  • 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),效率还是非常高的。斐波那契数列还有很多其他的输出方式,这里只是讲几个实现的方法,就不一一列举其他的了。

  • 相关阅读:
    循环神经网络(RNN)的改进——长短期记忆LSTM
    AlphaGO的背后/《mastering the game of GO wtth deep neural networks and tree search》研究解读
    <科普>CPU进行四则运算(加减乘除)的主流方法
    在CV尤其是CNN领域的一些想法
    只要听说过电脑的人都能看懂的网上pdf全书获取项目
    python简单爬虫(爬取pornhub特定关键词的items图片集)
    并查集模板
    Linux命令学习-cp命令
    Linux命令学习-mv命令
    Linux命令学习-ls命令
  • 原文地址:https://www.cnblogs.com/wujianwu/p/11126751.html
Copyright © 2011-2022 走看看