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
本想把生活活成一首诗, 时而优雅 , 时而豪放 , 结果活成了一首歌 , 时而不靠谱 , 时而不着调