用遞歸的算法求1,1,2,3,5,8.......的第30位數是多少


這兩天面試時遇到了斐波那契數列算法題, 其實之前也曾遇到過,不過這次不同的是要求用遞歸來實現,

不是很明白為何面試公司都喜歡這種算法題,實際業務中用到的情況是很少的.尤其在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*)在現代物理、准晶體結構、化學等領域,斐波納契數列都有直接的應用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM