Buscar

meu algoritimo ta dando erro me ajudem

#include<stdlib.h>
#include<stdio.h>

int main(void){
    
    int fatorial(int x);
    int numero,resultado;
    
    printf("digite um numero inteiro");
    scanf("%d", &numero);
    
    printf("o fatorial eh %d",resultado);
    
    resultado = fatorial(numero);

    system("pause");
    return 0;
}

int fatorial(int x){
    int resultado;
    if(x==0);{
resultado=1;
}  else
}
{
    resultado=x*fatorial(x-1);
    
    return resultado;
    
}

💡 6 Respostas

User badge image

Ivan Filho

Já achei vários erros no código. Só uma pergunta, você tem mesmo que usar Chamada Recursiva? Por que não faz esse algoritmo pelo método iterativo?

0
Dislike0
User badge image

Ivan Filho

TENTE USAR ESTE CÓDIGO:

#include <stdio.h>

int main()
{
    int n;
    int ret = 0;
    printf("DIGITE UM NUMERO INTEIRO: ");
    scanf("%d",&n);

    ret = fatorial(n);
    printf("O FATORIAL DE %d EH: %d ",n, ret);
}

int fatorial (int n)
{
    if(n==1)
        return n;
    return fatorial(n-1) * n;
}

0
Dislike0
User badge image

Vanessa Moura

Bom dia Ana, tudo bem?

Como o nosso colega Ivan disse, o código realmente apresenta alguns erros de lógica. Vou tentar te explicar alguns.

Você declarou a função int fatorial depois do int main, coloque a função antes.

Dentro da função Int main você:

  • declarou as variáveis, pediu pro usuário digitar e leu o numero que ele digitou OK!
  • Só que dai vc pediu para o programa imprimir o valor da variável: "resultado" antes de atribuir valor a ela.
  • Um outro erro grave esta na sua função. As chaves de abertura e fechamento da instrução estão erradas. A primeira condição if(x==0) esta correta, só que observe a condição else. Além das chaves estarem invertidas, o comando verdadeiro da condição esta fora das chaves, daí o programa se perde todo. É muito importante que você se atente a identação do código para que vc mesma não se perca. 
  • Não use return 0 neste caso.
  • Há duas formas de se calcular o fatorial, seguindo a sua lógica tente desta forma:
  • #include <stdio.h>
    #include <stdlib.h>

    float fatorial(const int x) {
    if( x <= 1 )
    return 1;
    return fatorial(x-1) * x;
    }

    int main(void) {
    int n;
    printf("Digite um numero:\n");
    scanf("%d",&n);

    printf( "O fatorial de %d e %-5.0f\n", n, fatorial(n));

    system("PAUSE");

    }

  • E uma dica: Procure entender o código, não apenas copie, porque lá frente as coisas vão se complicando. Compare com o que você fez e procure entender como foi feito :)!

    Abraços e boa sorte!
0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais

Perguntas relacionadas