Você está na página 1de 3

Instituo federal de educação, ciência e tecnologia do Pará

Curso: informática 2° ano\ Turma:K2292MH

Dupla: Allan Martins Pereira

José augusto Silva da Silva

RECURSIVIDADE

Abaetetuba-PA

2020
Recursividade é o recurso em que utiliza-se, sub-rotinas podendo ser funções ou
métodos para chamarem a si mesmas, ela chama a si mesma várias vezes o que
pode acabar causando um loop infinito se não houver alguma condição para ser
atendida para finalização da instrução. É dividida em direta e indireta.

É denominada Recursão Direta uma rotina que é formada por um conjunto de


comandos e uma chamada a ela mesma. É denominada Recursão Indireta uma
rotina que contém uma chamada a outra rotina que, por sua vez, tem uma chamada
a outra rotina e assim sucessivamente, portanto, rotinas diferentes.

A função recursiva, serve basicamente para resolver um problema maior, o


repartindo em pequenos problemas para solução do mesmo. Existe o caso trivial,
que é o máximo de diminuição em problemas mais simples que a função consegue
resolver, e o caso geral que o próprio problema maior em si.

Enquanto for necessário dividir o problema em problemas menores, a função


recursiva continuará chamando a si mesma, para continuar dividindo, até chegar no
caso mais básico e, quando isso ocorre, a função para de dividir e começa a gerar
os resultados. Todos os dados de todas as variáveis envolvidas na função recursiva
devem ser guardados a cada chamada, isso significa que uma pilha de chamadas
da função deve ser criada. Quando a função começa a retornar os resultados
(retornos das chamadas) então temos o desempilhamento das chamadas da função
da pilha de controle de chamadas e retornos da função recursiva, que retornarão a
quem chamou o resultado solicitado. Esse resultado é agrupado com o próximo e
assim sucessivamente, até formar o resultado final. Conforme são desempilhados,
os valores também são liberados da memória, exatamente como ocorre em uma
pilha dinâmica.

Exemplo abaixo:

Calcular o fatorial de um número usando recursividade.

função fatorial(x: inteiro): inteiro

inicio

se x = 0 então

fatorial <- 1

senão
fatorial <- x * fatorial(x - 1)

fim_se

fim

Você também pode gostar