原生javascript递归的一些问题

function f1(n){
    if(v1==1){
        return 1;   
    }
    return 2*f1(n-1)+1;
}

做了一个简单的递归函数 我输入的数比较小的时候都符合规律 但是当我
输入大于40多的数的时候 发现 输出的结果编程偶数了 根据公式来说出来的数一定是奇数
不可能数显偶数 方法应该没问题 为什么会出现这种情况
我用的原生JS做的

整数溢出了,js最大安全整形是9007199254740991,你的都超了

https://segmentfault.com/a/1190000002608050

刚试了一下在n=54 结果是18014398509481984