public virtual bool Contem(T valor, out Recorrencia <T> recorrenciaComValor)
 {
     if (Atual.CompareTo(valor) == 0)
     {
         recorrenciaComValor = this;
         return(true);
     }
     else if (Atual.CompareTo(valor) > 0)
     {
         if (AnteriorNaRecorrencia.Atual.CompareTo(valor) < 0)
         {
             recorrenciaComValor = null;
             return(false);
         }
         else
         {
             recorrenciaComValor = null;
             return(AnteriorNaRecorrencia.Contem(valor, out recorrenciaComValor));
         }
     }
     else
     {
         if (ProximoNaRecorrencia.Atual.CompareTo(valor) > 0)
         {
             recorrenciaComValor = null;
             return(false);
         }
         else
         {
             recorrenciaComValor = null;
             return(ProximoNaRecorrencia.Contem(valor, out recorrenciaComValor));
         }
     }
 }
        public virtual Recorrencia <T> ObtemProximoValorAPassos(int n)
        {
            Recorrencia <T> recorrenciaANPassos = this;

            for (int i = 0; i < n; i++)
            {
                recorrenciaANPassos = recorrenciaANPassos.ProximoNaRecorrencia;
            }

            return(recorrenciaANPassos);
        }