在Javascript中,bin(n)[3::]:中的i的等价物是什么?

在Javascript中,bin(n)[3::]:中的i的等价物是什么?,javascript,python,fibonacci,modulo,Javascript,Python,Fibonacci,Modulo,我正在研究一个返回大斐波那契数模的算法。我发现了一种快速、高效的算法,用于使用以下python确定值: def fib(n): v1, v2, v3 = 1, 1, 0 # initialise a matrix [[1,1],[1,0]] for rec in bin(n)[3:]: # perform fast exponentiation of the matrix (quickly raise it to the nth power) calc =

我正在研究一个返回大斐波那契数模的算法。我发现了一种快速、高效的算法,用于使用以下python确定值:

def fib(n):
    v1, v2, v3 = 1, 1, 0    # initialise a matrix [[1,1],[1,0]]
    for rec in bin(n)[3:]:  # perform fast exponentiation of the matrix (quickly raise it to the nth power)
        calc = v2*v2
        v1, v2, v3 = v1*v1+calc, (v1+v3)*v2, calc+v3*v3
        if rec == '1':    
            v1, v2, v3 = v1+v2, v1, v2
    return v2 
我很想了解如何在javascript中实现这一点,二进制转换行让我很头疼。 这里for循环使用每个整数的二进制转换,我假定从0到n,并将结果截断为3位。在循环体内部,还针对字符串表示形式1对“rec”进行相等性检查。有人能把它拆开吗?任何见解都值得赞赏。谢谢

这是JavaScript(ES6)的等价物:

函数fib(n){
让[v1,v2,v3]=[1,1,0];//初始化矩阵[[1,1],[1,0]]
对于(n.toString(2.slice(1))中的(i)){//执行矩阵的快速幂运算(快速将其提升到n次方)
设calc=v2*v2;
[v1,v2,v3]=[v1*v1+calc,(v1+v3)*v2,calc+v3*v3];
如果(i=='1')
[v1,v2,v3]=[v1+v2,v1,v2];
}
返回v2;
}
//演示
控制台日志(fib(15))这是JavaScript(ES6)的等价物:

函数fib(n){
让[v1,v2,v3]=[1,1,0];//初始化矩阵[[1,1],[1,0]]
对于(n.toString(2.slice(1))中的(i)){//执行矩阵的快速幂运算(快速将其提升到n次方)
设calc=v2*v2;
[v1,v2,v3]=[v1*v1+calc,(v1+v3)*v2,calc+v3*v3];
如果(i=='1')
[v1,v2,v3]=[v1+v2,v1,v2];
}
返回v2;
}
//演示

控制台日志(fib(15))如果它是正数,我认为它只是
我的数字。tostring(2)
…如果它是正数,我认为它只是
我的数字。tostring(2)
。。。。