# Recursion is a way of solving problems by having a function call itself
# Rules of recursion:
# 1. Performing the same operations multiple times with different inputs
# 2. In every step we try smaller inputs to make the issue smaller
# 3. Base condition is needed to stop recursion otherwise infinite loop will occur

# why recursion?
# When to use recursion (it's very similar to iteration, but they have different use cases
# - if you can break down the issues into similar sub-issues
# - design an algorithm to compute nth
# - write a code to list n
# - implement a method to compute all

# The prominent usage of recursion is in trees and graphs

