I’m trying to resolve a small programming challenge, which is calculating the nth number of the Golomb’s sequence (see this for more help). I’ve written a simple solution, but it may have any problem, because the number at 2500000 position is 10813 but my program gives me 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);
Maybe, the golden ratio needs more lenght than JavaScript gives. Someone can help? Thanks.
For what it’s worth, here is a function based on the recurrence relation, with a cache, that gives the correct answer pretty quickly
check it up on jsFiddle