Jun 29, 2024
fib(n) to return the n-th Fibonacci number.function fib(n) {
if (n <= 2) return 1;
return fib(n - 1) + fib(n - 2);
}
function fib(n, memo = {}) {
if (n in memo) return memo[n];
if (n <= 2) return 1;
memo[n] = fib(n - 1, memo) + fib(n - 2, memo);
return memo[n];
}
function gridTraveler(m, n) {
if (m == 1 && n == 1) return 1;
if (m == 0 || n == 0) return 0;
return gridTraveler(m - 1, n) + gridTraveler(m, n - 1);
}
function gridTraveler(m, n, memo = {}) {
const key = m + ',' + n;
if (key in memo) return memo[key];
if (m == 1 && n == 1) return 1;
if (m == 0 || n == 0) return 0;
memo[key] = gridTraveler(m - 1, n, memo) + gridTraveler(m, n - 1, memo);
return memo[key];
}
function canSum(targetSum, numbers) {
if (targetSum == 0) return true;
if (targetSum < 0) return false;
for (let num of numbers) {
const remainder = targetSum - num;
if (canSum(remainder, numbers) === true) {
return true;
}
}
return false;
}
function canSum(targetSum, numbers, memo = {}) {
if (targetSum in memo) return memo[targetSum];
if (targetSum == 0) return true;
if (targetSum < 0) return false;
for (let num of numbers) {
const remainder = targetSum - num;
if (canSum(remainder, numbers, memo) === true) {
memo[targetSum] = true;
return true;
}
}
memo[targetSum] = false;
return false;
}
End of Lecture Summary