The coin change problem is a classic dynamic programming problem **(unbounded knapsack problem)** which can be solved recursively.

N = Coins with different denominations

D = Array of denominations

S = Total amount to make

C = Number of Combinations

Recursive Formula:

C(N, S) = C(N - 1, S) + C(N, S - D[N]);