Muitos algoritmos úteis são recursivos em sua estrutura, ou seja, para resolver um
dado problema, eles chamam a si mesmos recursivamente uma ou mais vezes para lidar com
subproblemas relacionados. Em geral, esses algoritmos seguem uma abordagem chamada: