這兩天面試時遇到了斐波那契數列算法題, 其實之前也曾遇到過,不過這次不同的是要求用遞歸來實現,
不是很明白為何面試公司都喜歡這種算法題,實際業務中用到的情況是很少的.尤其在B/S項目結構時.
既然考了,那就整理了一下,兩個實現的方式如下;
1. 遞歸代碼如下:
public static void DiGui(int y, int k, int sgin){ if(sgin >= 30) return; int result = y + k; System.out.println(y + k); sgin++; DiGui(k, result, sgin); }
2.非遞歸代碼實現:
public static void NoDiGui(){ int a = 0; int b = 1; int result = 0; for(int i = 0; i < 30; i++){ result = a + b; a = b; b = result; System.out.println(result); } }
再補充一下相關的知識點來源吧:
斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數列”,指的是這樣一個數列:1、1、2、3、5、8、13、21、34、……在數學上,斐波納契數列以如下被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在現代物理、准晶體結構、化學等領域,斐波納契數列都有直接的應用