RECURSIVIDADE


  Após trabalhar com funções, você já deve ter se perguntado: posso chamar uma função dentro dela mesmo? A resposta é sim. Podemos chamar uma função dentro dela infinitamente (em tese). A esse mecanismo, de chamar uma função dentro dela mesmo, damos o nome de recursividade.

  Sintaxe:
 void nome_funcao()
 {
   nome_funcao();
 }

  O grande problema da recursividade é saber quando parar, ou até mesmo, como parar, visto que esse tipo de chamada é infinito.
  Então, parece claro que um teste lógico deverá ser feito antes de se atingir o chamamento da função, de modo que a recursividade seja interrompida.

  O teste poderá ser feito de duas formas:
  Teste antes:
#include <stdio.h>

int i;

void loop()
{
  printf("%d\n",i);

  if (i == 5)
    return;

  i++;
  loop();
}

void main(void)
{
  i=1;
  loop();
}
  Saída:
  1
  2
  3
  4
  5

  Obs:
  Teste durante:
#include <stdio.h>

int i;

void loop()
{
  printf("%d\n",i);

  if (i<5)
  {
    i++;
    loop();
  }
}

void main(void)
{
  i=1;
  loop();
}
  Saída:
  1
  2
  3
  4
  5

  O capítulo de recursividade do Pascal apresenta uma ilustração do comportamento de um programa em caso de recursividade.

  A seguir, um exemplo prático de recursividade: o cálculo de um número fatorial.
#include <stdio.h>

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

int i;

void main(void)
{
  i = 4;
  printf("%d! = %d\n", i, fatorial(i));
}
  Saída:
  4! = 24


/MARMSX/CURSOS/C--