Recursividade e a Habilidade da Linguagem
Por: lfgalindo • 5/9/2016 • Projeto de pesquisa • 1.518 Palavras (7 Páginas) • 265 Visualizações
Recursividade
Recursividade é a habilidade de uma linguagem que permite que uma função chame ela mesma, assim a recursividade não é uma função específica, mas pode ser entendida como um conceito, ou uma maneira de programar. A recursividade pode ser direta ou indireta, onde:
Direta: quando a função chama a si mesma no seu corpo de função.
Indireta: quando a função chama outra função, que por sua vez, à chama novamente
Uma função recursiva cria a cada chamada um novo conjunto de variáveis locais, por isso não há um ganho de velocidade ou de espaço de memória significativo e pode até mesmo criar um laço de repetição infinito que irá continuar até esgotar o espaço da memória.
Resumindo: “A recursividade é uma forma de implementar um laço através de chamadas sucessivas à mesma função. ” (DAMAS, 1999).
Assim a recursividade é uma maneira de simplificar o código e com isso facilitar a sua leitura. Porém há alguns cuidados que devemos tomar para que, como já foi falado, a função recursiva não se torne um loop infinito.
O primeiro passo ao criar uma função recursiva é definir uma instrução de término das chamadas, ou seja, a condição que deve ser cumprida para que o loop termine e a função pare de chamar a si mesma.
O segundo cuidado é que os parâmetros enviados pela função devem ser relativos a um subconjunto, ou seja, eles poderão ser alterados a cada chamada da função, pois se forem sempre os mesmos, nunca irão satisfazer a condição de término.
Um exemplo prático e simples em que podemos usar os conceitos de recursividade é no cálculo de um número fatorial. Onde uma maneira sem o uso da recursividade seria assim:
/*Programa que calcula fatorial sem o uso de recursividade*/ #include #include float fat(float res){
float x;
x = res - 1;
while(x > 1){ res = res * x; x--; }
return res;
} main(){
int num; float result;
printf("============== 3 ADS - Vespertino =============== =\n\n"); printf(" Estrutura de Dados \n\n"); printf("Professor: Fabio Queiroz\n\n"); printf("Alunos: Luiz Felipe\n Thiago Felipe\n\n"); printf("==================================================\n\n\n"); printf("Digite o numero desejado: "); scanf("%d",&num);
if(num == 0){ result = 1; }else{ result = fat(num); }
printf("\n\nO fatorial do numero %d \202: %.0f\n\n\n", num, result);
} |
...