Add recursive and dynamic programming solution to fibonacci

This commit is contained in:
helloShen 2022-02-08 14:19:06 -05:00
parent 997cb06a7f
commit e100fe81c3
1 changed files with 23 additions and 2 deletions

View File

@ -1,6 +1,6 @@
const fibonacci = function(count) {
if (count < 0) return "OOPS";
if (count === 0) return 0;
if (count == 0) return 0;
let a = 0;
let b = 1;
for (let i = 1; i < count; i++) {
@ -11,4 +11,25 @@ const fibonacci = function(count) {
return b;
};
module.exports = fibonacci;
/* naive recursive */
const fibonacciRecursive = function(count) {
if (count < 0) return 'OOPS';
if (count == 0) return 0;
if (count == 1) return 1;
return fibonacciRecursive(count - 1) + fibonacciRecursive(count - 2);
}
/* Dynamic Programming (DP) recursive */
const fibonacciDp= function(count) {
return fibonacciDpHelper(count, {'0': 0, '1': 1});
}
const fibonacciDpHelper = function(count, memo) {
if (count < 0) return 'OOPS';
if (memo.hasOwnProperty(`${count}`)) return memo[`${count}`];
const result = fibonacciDpHelper(count - 1, memo) + fibonacciDpHelper(count - 2, memo);
memo[`${count}`] = result;
return result;
}
module.exports = fibonacci;