19 lines
416 B
JavaScript
19 lines
416 B
JavaScript
var hofstadterQ = function() {
|
|
var memo = [1,1,1];
|
|
var Q = function (n) {
|
|
var result = memo[n];
|
|
if (typeof result !== 'number') {
|
|
result = Q(n - Q(n-1)) + Q(n - Q(n-2));
|
|
memo[n] = result;
|
|
}
|
|
return result;
|
|
};
|
|
return Q;
|
|
}();
|
|
|
|
for (var i = 1; i <=10; i += 1) {
|
|
console.log('Q('+ i +') = ' + hofstadterQ(i));
|
|
}
|
|
|
|
console.log('Q(1000) = ' + hofstadterQ(1000));
|