Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida, funcionamento de função recursiva


Augusto-Lobo

Pergunta

Boa noite! Gostaria de entender como funciona esta função int fat para fatorar:

int fat(int n)
{
    if(n == 0 | n == 1)
        return 1;
    return n * fat(n-1);
}


int main () 
{
       int num = 5;
       printf("Fatorial de %d = %d\n", num, fat(num));
        return 0;                 
}
 

Meus conhecimentos são básicos, então está confuso o fato de não ter chaves após o if e ter os dois returns, o que acontece ali dentro passo a passo?
Muito obrigado pela atenção.

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

quando n tiver chaves somente terá como efeito a seguinte instrução, neste caso o return 1;, por isso esta identado com 4 espaços.

Para deixar claro o returne tem 2 funçoes, 1º deter a função e 2º retornar um valor. Uma função pode ter tantos return como desejar porem ao atingir o primeiro automaticamente sai da função nesse ponto.

Uma função do tipo void tambem pode ter algum return porem sem valor. A seguinte função é perfeitamente valida:

void foo(){
   return;
}

note que não retorna valor algum, serve somente para deter a função neste ponto. Util quando desejar deter o programa em algum ponto depois de, por exemplo, fazer uma comprovação.

Sobre if, si somente tiver uma instrução não precisa por chaves, o programa toma a seguinte linha de código como parte deste if, porem se tiver mais de uma linha, neste caso é obrigado a usar chaves, porque si não, como falei, o programa vai achar que somente uma linha pertence ao if, as demais ficam como fora. As chaves servem para informar ao programa que um bloco de instruçoes pertencem a um if anterior, ou a uma função, ou um for por exemplo.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...