我正在尝试解决一个小的编程挑战,即计算 Golomb 序列的第 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 提供的更长的长度。有人可以帮忙吗?谢谢。