Q9:斐波那契数列

来源:互联网 发布:模拟别人说话声音软件 编辑:程序博客网 时间:2024/06/11 09:24

public class Q9 {

   /**

    * 题目:斐波那契数列

    * 题目说明:写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列的定义如下:

    *f(n)=0;n=0

    *f(n)=1;n=1

    *f(n)=f(n-1)+f(n-2);n>1

    * 解题思路:解决该类问题可以从两个方向进行:1)利用递归实现;但是这种方法当输入数值较大时,时间效率较低;其时间随着n呈指数增加。

    * 2)利用for循环来实现,时间复杂度为O(n)级别。

    */

   public static void main(String[] args) {

      Q9 test=new Q9();

      System.out.println(test.fibonacci1(10));

      System.out.println(test.fibonacci2(10));

   }

   //利用递归实现

   public long fibonacci1(int n){

      if(n<=0){

         return 0;

      }

      if(n==1){

         return 1;

      }

      return fibonacci1(n-1)+fibonacci1(n-2);

   }

   //利用for循环实现

   public long fibonacci2(int n){

      int numberMin=0;

      int numberMax=1;

      int result=0;

      if(n==numberMin){

         return numberMin;

      }

      if(n==numberMax){

         return numberMax;

      }

      //注意此处条件是从2开始的,包含n

      for(int i=2; i<=n; i++){

         /*

          * 赋值过程规律:和=大数+小数;

          * 小数=大数;

          * 大数=和;

          * */

         result=numberMin+numberMax;

         numberMin=numberMax;

         numberMax=result;

      }

      return result;

   }

}
0 0
原创粉丝点击