Jump to content
Fórum Script Brasil
  • 0

Dúvida, funcionamento de função recursiva


Question

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 to post
Share on other sites

1 answer to this question

Recommended Posts

  • 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 to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148691
    • Total Posts
      644531
×
×
  • Create New...