We can use recursion to solve a problem when it has which two properties:
A.
After the problem size being reduced, the problem become smaller, but nature remains the same
B.
When the problem size becomes small enough, the problem is very trivial to solve
C.
The problem can be divided into different small problems and be solved one by one
D.
The problem can be divided into different small problems and be solved together