ゴロム数列のn番目の数を計算するという小さなプログラミングの課題を解決しようとしています(詳細については、これを参照してください)。簡単な解決策を書きましたが、2500000の位置の番号が10813であるため、問題が発生する可能性がありますが、私のプログラムでは10814が返されます。
var golomb = (function(){
var cache = [null, 1];
const o = 0.5 * (1 + Math.sqrt(5)); // Golden ratio
return function(n){
return cache[n] || (function(){
return Math.round(Math.pow(o, 2-o) * Math.pow(n, o-1));
})();
};
})();
var num = golomb(process.argv[2]);
console.log(num);
たぶん、黄金比はJavaScriptが与えるよりも長い必要があります。誰かが助けることができますか?ありがとう。