Refarorando o algoritmo RepeatedSquaring para possuir a variável predecessor