TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Recursividade e a Habilidade da Linguagem

Por:   •  5/9/2016  •  Projeto de pesquisa  •  1.518 Palavras (7 Páginas)  •  267 Visualizações

Página 1 de 7

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);

                                

}

...

Baixar como (para membros premium)  txt (4.7 Kb)   pdf (136.2 Kb)   docx (10.4 Kb)  
Continuar por mais 6 páginas »
Disponível apenas no TrabalhosGratuitos.com