Every Recursive function needs to have a base case (Else will cause Stack overflow) Recursive functions always have at minimum two return statements (Base case and recursive case)
Anything that can be done recursively can be done using loops
Recursion high memory requirement (Call stack of all calls need to be held in memory)
When using trees or converting something into a tree, consider recursion
Steps to Solve Recursive Program
Find what is the smallest possible input(s) - Base Cases
Play around with examples and visualize (Find patterns)
Relate hard cases to simple cases (Find patterns)
Generalize the pattern
Write code by combining recursive pattern with base case