Enviado em 25/09/2023 - 09:00h
Gente eu fiz um função recursiva para fatorial, deu certo e eu entendi como ela funciona, mas tem algo que está estranho, segue o código:
Assim, se a seed for maior que zero, a condição será validada e ignorará o else certo? Porém, ao ignorar o else, a função fica sem retorno, e na minha cabeça isso era para dar um erro de função sem retorno, mas quando eu executo o código ele me retorna o fatorial certo, ou seja, o compilador meio que está "vendo" que a função está sem retorno e busca nos escopos dela algum retorno? E acha o return total e executa?
int factorial(int seed) {
int total = 1;
if(seed > 0) {
total = seed * factorial(seed - 1);
} else {
return total;
}
} Assim, se a seed for maior que zero, a condição será validada e ignorará o else certo? Porém, ao ignorar o else, a função fica sem retorno, e na minha cabeça isso era para dar um erro de função sem retorno, mas quando eu executo o código ele me retorna o fatorial certo, ou seja, o compilador meio que está "vendo" que a função está sem retorno e busca nos escopos dela algum retorno? E acha o return total e executa?