terça-feira, 28 de fevereiro de 2012

Recursividade

Em Ciência da computação, a recursividade é a definição de uma subrotina (função ou método) que pode invocar a si mesma. A grande vantagem da recursão está na possibilidade de usar um programa de computador finito para definir, analisar ou produzir um estoque potencialmente infinito de sentenças, designs ou outros dados.
Wikipédia

Então vamos usar um fatorial para exemplificar
uma função em c que calcule o fatorial de um numero x sem recursividade

int fatorial (int x){
int i;
i = x - 1;
for (i; i!=1; i--)
x = x * i;
return x;
}

Então podemos considerar que:

fatorial de 5 é igual a 5 multiplicado pelo fatorial de 4;
fatorial de 4 é igual a 4 multiplicado pelo fatorial de 3;
fatorial de 3 é igual a 3 multiplicado pelo fatorial de 2 que é 2


fatorial de x = x * fatorial de ( x -1 );

Logo em C a função fatorial recursiva fica.


int fatorial (int x){
if(x<2)
return x;
return fatorial(x-1) * x;
}