斐波那契數列求求前20項(朋友碰到的面試題)


1.已有的對象(數組)和生成的對象(數組)

var arr = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55]    //這就是斐波那契數列的前十項
function
fn(i) { if (i == 2 || i == 1) { return 1; } return fn(i - 1) + fn(i - 2) } var o = [] for (var i = 1; i <= 10; i++) { var a = fn(i) o.push(a) //存的就是斐波那契的全十項 } console.log(o); //打印結果就是斐波那契數列 console.log(o === arr); //false

返回值永遠為false,原因和同步,異步之間沒有任何關系...因為復雜數據類型會自己在堆區創建一個空間,所以兩個空間永遠不可能相等,除非另外一個對象是當前對象改變指向賦值的

a1 = [123];
a2 = a1
console.log(a1 == a2)  //true

之前遇到朋友面試,面試官問的就是求斐波那契前20項的和,他跟我說斐波那契他會,求前20項的和他就不會了,比較尷尬

我在想既然會斐波那契,前20項不就是相當於fn(1)....fn(20)相加,20個'' 常數 '' 相加的和么

function fn(i) {
    if (i == 2 || i == 1) {
        return 1;
    }
    return fn(i - 1) + fn(i - 2)
}
// 使用for循環求斐波那契數列前20項的和
let num = 0;
for (let i = 1; i <= 20; i++) {
    num += fn(i);
}
console.log(num);  //17710


免責聲明!

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



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