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
posted on 2019-12-24 10:03  深海里的星星i  阅读(4661)  评论(0编辑  收藏  举报