Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Dúvida na Recursão

Desculpem, mas fiquei na dúvida na função recursiva, conheço o conceito e a prática de funções recursivas, mas neste caso fiquei na dúvida,

public static ErrorResponse From(Exception ex)
        {
            if (ex == null)
                return null;

            return new ErrorResponse
            {
                Codigo = ex.HResult,
                Mensagem = ex.Message,
                InnerError = From(ex.InnerException)
            };
        }

Ele vai ficar chamando o método From eternamente quando o From for chamado de fora dessa classe? Não entendi o funcionamento por baixo dos panos dessa técnica.

1 resposta
solução!

Marcos, boa tarde.

Todo método que usa recursão precisa de pelo menos uma condição básica, onde a solução será resolvida trivialmente. No nosso caso é a condição if (ex == null) return null. Essa condição será usada para popular a exceção mais interna de uma outra exceção.

Abaixo estou copiando um trecho de um texto em inglês com uma explicação de funções recursivas:

The job of the recursive cases can be seen as breaking down complex inputs into simpler ones. In a properly designed recursive function, with each recursive call, the input problem must be simplified in such a way that eventually the base case must be reached. Neglecting to write a base case, or testing for it incorrectly, can cause an infinite loop.

Espero que tenha ajudado!

Abraços.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software