ds-algo-study
Version:
Just experimenting with publishing a package
35 lines (29 loc) • 801 B
JavaScript
function fib ( n ) {
if ( n === 1 || n === 2 ) {
return 1;
}
return fib( n - 1 ) + fib( n - 2 );
}
function fibMemo ( n, memo = { 1: 1, 2: 1 } ) {
if ( n in memo ) {
return memo[ n ];
}
let result = fibMemo( n - 1, memo ) + fibMemo( n - 2, memo );
memo[ n ] = result;
return memo[ n ];
}
// Setting the memo when the base case is reached
// (I like the above approach better since we already know we can hardcode those
// two values, but this will work the same.)
function fibMemo ( n, memo = {} ) {
if ( n in memo ) {
return memo[ n ];
}
if ( n === 1 || n === 2 ) {
memo[ n ] = 1;
return 1;
}
let result = fibMemo( n - 1, memo ) + fibMemo( n - 2, memo );
memo[ n ] = result;
return memo[ n ];
}