Algorithms
Greedy
Greedy algorithms basically check the entire input and doesn't care to try reducing it.
Ex.: Linear Search
Divide and Conquer
Split your input into chunks, analyse it then re-split it and on and on... to hopefully solve things faster.
Ex.: Recursion or Binary Search
Recursion
Resolve something by breaking down the problem and re-looking at it until you reach a base case.
function factorial(n: number): number {
// Base case
if (n === 1) return 1;
// Recurse
return n * factorial(n - 1);
}
3 sections of recursion
Recursive functions can be broken down in three sections:
function factorial(n: number): number {
/**
* Pre-recurse, things to do before recursing
*/
/**
* Recurse
*/
factorial(n - 1);
/**
* Post-recurse, things to do after recursing
*/
}
Dynamic Programming
Last updated