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
