• Consists of a recursive part that calls itself and a base case that doesn't (breaking out of the recursive calls)
  • when a fn calls itself, it pushs new execution context to the execution stack
  • when base case is met, the stack unwinds as context is popped off one by one (last in first out or FIDO)

References

https://www.reddit.com/r/learnprogramming/comments/3dmyap/wrapping_my_head_around_recursion/