Recursion method by definitions is a way of solving a problem by having a function calling itself and make the problems become smaller and easier to find solutions.

#### Why We Need Recursion?

1. Recursion can break big problems into smaller ones and easy to use

2. Prominent usage of recursion in data structures like trees and graphs

3. Used in many algorithm (divide and conquer, greedy and dynamic programming)

#### How it works?

1. The method call it self

2. There's end conditions to interrupt loop

3. In stack Memory using FILO.

#### Recursive Vs Iterative Solutions?

Stack memory require?Recursive: Yes

Iterative: No

Time Efficient?

Recursive: No

Iterative: Yes

Easy To Code?

Recursive: Yes

Iterative: No

#### When To Use Recursion:

1. When conditions breakdown to similar small sub problems meet

2. When Fine with extra overhead

3. When need quick working solutions

4. When traverse a tree

5. When use memorization in recursion

#### Method to do Recursion:

Factorial Problems: 5! = 5*4*3*2*1 => n * (n-1) * (n-2) * (n-3) ... *2 * 1

Define Formula: n! = n * f(n-1)

#### Example:

*Example with Factorial Problems (*5! = 5*4*3*2*1

*):*

*Example with Fibonaci Problems (*0, 1, 1, 2, 3, 5, 8, ...

*):*

*Example with Sum Of Digits (*108 = 10 +8 ; 56 = 5 + 6

*):*