js斐波那契用for循环的思路

93 阅读1分钟
    function fb(n) {
        if (n === 1 || n === 2) {
            return 1;

        }
        var n1 = 1;
        var n2 = 1;
        var result = 0;
        for (let i = 3; i <= n; i++) {
            result = n1 + n2;
            n1 = n2;
            n2 = result
        }
        return result;
    }
    console.log(fb(5)

这两个是什么意思?

n1 = n2;

n2 = result

(1 1 2 3 5 8 13 21)

是为了求下次的结果做准备, 当是3的话,循环1次

 2=1+1
 n1=1
 n2=2
   

当是4的话,循环2次

3=1+2(n1+n2)

n1=2

n2=3

当是5的话,循环3次

5=2+3
n1=3
n2=5
   

所以用for循环做的话能一眼看出结果,如果再求6项对应的数字就是8,再求7就是13,每一次变化重点的是n1+n2,到了输出结果重点才是result,没求到结果前result都不是重点。