On peut "cacher" des résultats, voici un exemple avec la plus lente fonction de fibonachi
f(n) { if (n<= 1) return n; return f(n - 1) + f(n - 2); }
/**
* f(5)
* / \
* f(4) f(3)
* / \ / \
* f(3) f(2) f(2) f(1)
* / \ / \ / \
* f(2) f(1) f(1) f(0) f(1) f(0)
* / \
* f(1) f(0)
let fib = function (n) {
if ( fib.cache[n] ) {
return fib.cache[n];
}
else {
if (n<= 1) {
fib.cache[n] = n
return n;
}
let u = fib(n - 1) + fib(n - 2);
fib.cache[n] = u;
return u;
}
return results;
};
fib.cache={};
console.time("appel 1");
console.log(fib(9));
console.timeEnd("appel 1");
console.time("appel 2");
console.log(fib(10));
console.timeEnd("appel 2");
code
P.S. pas de récursif pour fibo dans tous les cas.