Bom dia/ Boa tarde/ Boa Noite, preciso de uma ajuda com um código. Sou iniciante e não consigo entender um erro no código, estou aprendendo por umas vídeo aulas no youtube e agora estou aprendendo mais sobre funções (mais especificamente funções recursivas). O código já está funcional, mas o meu problema é que não consigo entender um erro (consegui corrigir, mas não entendi o pq dele estar aparecendo), parece que o if afeta o else e consequentemente o resultado final, o código vai estar logo abaixo:
#include <stdio.h>
int main(void) {
int fatorial(int x);
int numero, resultado_final;
printf("Digite um número:\n");
scanf("%i", &numero);
resultado_final = fatorial(numero);
printf("O fatorial de %i é igual a %i\n", numero, resultado_final);
return 0;
}
int fatorial(int x){
int resultado;
if(x < 0){ /* Nesse caso o resultado sempre vai ser zero, mas se mudar o (x < 0) para (x == 0) o else funciona normalmente, ou seja, o if de alguma forma afeta o else que modifica o resultado final (lembrando que isso é aos meus olhos de iniciante), mas quero saber o pq isso acontece??? Podem me ajudar? Por favor. */
resultado = 1;
}
else{
resultado = x * fatorial(x - 1);
}
return resultado;
}
Minha pergunta é: pq o resultado sempre é zero? Se a condição de if não for falsa, não deveria pular para else e executar normalmente??