js算斐波那契数列的结果是怎么来的

48 阅读1分钟
function fb(n) {
        if (n === 1 || n === 2) {
            return 1;
        } return fb(n - 1) + fb(n - 2);
    }
    console.log(fb(3)
    //代入式子,3-1+3-2
    //fb(2)+fb(1)
    //1+1=2
    
    console.log(fb(4))
    //代入式子,4-1+4-2
    //fb(3)+fb(2),现在拆式子
    //(3-1)+(3-2)+1
    //fb(2)+fb(1)+1
    //1+1+1=3
    
    console.log(fb(5))
    //代入式子(5-1)+(5-2)
    //fb(4)+fb(3)
    //(4-1)+(4-2)+(3-1)-(3-2)
    //fb(3)+fb(2)+fb(2)+fb(1)
    //(3-1)+(3-2)+1+1+1
    //fb(2)+fb(1)+1+1+1
    //1+1+1+1+1=5
    
    console.log(fb(6))
    //(6-1)+(6-2)
    //fb(5)+fb(4)
    //拆分,(5-1)+(5-2)+(4-1)+(4-2)
    //(4-1)+(4-2)+(3-1)+(3-2)+(3-1)+(3-2)+fb(2)
    //(3-1)+(3-2)+fb(2)+fb(2)+fb(1)+fb(2)+fb(1)+1
    //fb(2)+fb(1)+1+1+1+1+1+1
    //1+1+1+1+1+1+1+1=8
    
    console.log(fb(7))
    console.log(fb(8))