1. **Base Case**: a simple problem that can be answered directly
2. **Recursive Case**: can be described in smaller occurrences of the same problem
3. **Initial Value**: some input
##### Example:
```js
function recursiveFunc(input) {
if (basecase) {
// do something easy we know
} else {
// recursive case
// a bit harder to solve, so ask for help
// by calling ourselves with an input
// that gets us closer to teh base case
recursiveFunc(newInput)
}
}
```