1. 程式人生 > >一列數字的規則如下;1,1,2,3,5,8,13,21,34........ 求第30位數字是多少,用遞規和非遞迴兩種方法演算法實現

一列數字的規則如下;1,1,2,3,5,8,13,21,34........ 求第30位數字是多少,用遞規和非遞迴兩種方法演算法實現

斐波納契數列(Fibonacci Sequence),又稱黃金分割數列。在數學上,斐波納契數列以如下被以遞迴的方法定義:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)在現代物理、準晶體結構、化學等領域,斐波納契數列都有直接的應用,現在我從演算法的角度,利用遞迴和非遞迴兩種方式來進行實現:

    一:遞迴

         這個數列是用遞迴來實現的經典例子。

        private static  long Fibonacci(int n)
         {
             long result = 1;//當n<=2時都返回1
             if(n>2)            //當n>2時,進行遞迴計算
             {
              result= Fibonacci(n-1)+Fibonacci(n-2);
             }
             return result;
        }

 二:非遞迴演算法,這個演算法主要是利用迴圈來進行計算:

      private static long Fibonacci(int n)
        {
            long result = 1; //當n<=2時都返回1
            if (n > 2)          //當n>2時,利用迴圈計算
            {
                long first = 1;
                long second = 1;              
                int i = 0;
                n = n - 2;      //每次當然要減少兩次迴圈
                while (i < n)
                {
                    first = second;
                    second = result;
                    result = first + second;
                    i++;
                }
            }
            return result;

        }


轉自:http://www.cnblogs.com/shaosks/archive/2011/09/29/2195109.html