Ir para conteúdo

Karl Boy

Membros
  • Postagens

    3
  • Registro em

  • Última visita

  • Dias Ganhos

    1

Posts postados por Karl Boy

  1. Você leu que estou começando a aprender sobre funções recursivas, né? Mas, meu problema não é com a matemática e sim com a lógica. Pelo que entendi da sua resposta e o pouco que sei sobre funções recursivas, outras funções são criadas na memória até o calculo chegar a zero e depois ela retorna o resultado, mas como o X só pode ser menor que zero, ela não chega até o final e acaba retornando zero, seria isso o que quis dizer? Poderia me indicar algum post/artigo que possa me ajudar? Por favor. Desde já agradeço.

    • Agradecer 1
  2. 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??

    • Agradecer 1
×
×
  • Criar Novo...