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;
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* 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;
 | 
					module.exports = fibonacci;
 | 
				
			||||||
		Loading…
	
		Reference in New Issue