JavaScript遞歸

什麼是遞歸?面試

  在函數的內部調用本身函數

下面有一個例子,經過這個例子,你們就能夠了解什麼是遞歸spa

function fun(){
    console.log(new Date())    //獲取當前時間,並在控制檯打印出來
    setTimeout(fun,1000)     //定時器,調用fun函數,1s調用一次
}
fun()

就這樣結果在控制檯每隔一秒打印一次。3d

在面試中,面試官,若是問js中遞歸的問題,通常都是問階乘和斐波那契數列。code

下面,我將介紹階乘和斐波那契數列用遞歸如何作blog

1. 階乘遞歸

  首先,咱們得先了解階乘的規律:n!= n * (n-1)!ci

function fun(n){
    if(n == 1 || n == 0){
        return 1;
    }
    return n * fun(n-1)
}
document.write(fun(10));

結果以下:數學

咱們只需更改調用函數中的實參,就能夠知曉每個數的階乘。it

不過,值得注意的是,階乘是從0開始的,也就是說負數是沒有階乘的,並且0的階乘是1,所以,在fun函數中,加了判斷條件,當n爲0或1是,直接返回1;下面的代碼就不用執行了。

2. 斐波那契數列

  什麼是斐波那契數列?

  斐波那契數列(Fibonacci sequence),又稱黃金分割數列、因數學家列昂納多·斐波那契(Fibonacci sequence)以兔子繁殖爲例子而引入,故又稱爲「兔子數列」,指的是這樣一個數列:一、一、

  二、三、五、八、1三、2一、3四、........在數學上,斐波納契數列以以下被以遞推的方法定義:F(1)=1,F(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)

  有了數列和規律,咱們就能夠寫了

function fun(n){
    if(n == 1 || n == 2){
        return 1;
    }
    return fun(n-1) + fun(n-2)
}
document.write(fun(9));

結果以下:

基本上,遞歸就結束了。

相關文章
相關標籤/搜索