Add recursive and dynamic programming solution to fibonacci
This commit is contained in:
parent
997cb06a7f
commit
e100fe81c3
|
@ -1,6 +1,6 @@
|
||||||
const fibonacci = function(count) {
|
const fibonacci = function(count) {
|
||||||
if (count < 0) return "OOPS";
|
if (count < 0) return "OOPS";
|
||||||
if (count === 0) return 0;
|
if (count == 0) return 0;
|
||||||
let a = 0;
|
let a = 0;
|
||||||
let b = 1;
|
let b = 1;
|
||||||
for (let i = 1; i < count; i++) {
|
for (let i = 1; i < count; i++) {
|
||||||
|
@ -11,4 +11,25 @@ const fibonacci = function(count) {
|
||||||
return b;
|
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;
|
Loading…
Reference in New Issue