Imagem do artigo Tipos de Dados: Recursividade

3.16. Tipos de Dados: Recursividade

Página 19 | Ouça em áudio

3.16. Tipos de Dados: Recursividade

A recursividade é um conceito fundamental na ciência da computação e um tópico essencial na lógica de programação. Ela se refere à técnica de fazer um programa chamar a si mesmo como parte de sua execução. Isso pode ser incrivelmente útil para resolver problemas que podem ser divididos em problemas menores de natureza semelhante.

A recursividade é uma alternativa ao uso de loops para repetir ações. Em vez de definir um loop que executa até que uma determinada condição seja atendida, uma função recursiva executa até que um caso base seja atendido.

O que é Recursividade?

Recursividade é um método de resolução de problemas onde a solução para um problema particular é baseada na solução de instâncias menores do mesmo problema. Um exemplo clássico de um problema que pode ser resolvido usando recursividade é o cálculo do fatorial de um número. O fatorial de um número n é o produto de todos os números inteiros positivos menores ou iguais a n. Isso pode ser resolvido usando recursividade, pois o fatorial de n (representado como n!) pode ser expresso como n * (n-1)!.

Como funciona a Recursividade?

Quando uma função é chamada em um programa, o sistema aloca um bloco de memória para armazenar os valores das variáveis e os endereços de retorno para a função. Quando uma função se chama, um novo bloco de memória é alocado no topo do bloco de memória anterior. Este processo continua até que a condição de término seja atendida, momento em que a função para de se chamar. Em seguida, o sistema começa a desalocar os blocos de memória, começando pelo bloco de memória mais recente e trabalhando de volta até o bloco de memória original.

Exemplo de Recursividade

Um exemplo comum de recursividade é a sequência de Fibonacci, onde cada número é a soma dos dois números anteriores. A sequência começa com 0 e 1. Os próximos números são obtidos adicionando os dois números anteriores para obter o próximo número. A sequência se parece com isto: 0, 1, 1, 2, 3, 5, 8, 13, 21, e assim por diante. Isso pode ser facilmente programado usando recursividade.

def fibonacci(n):
    if n <= 1:
       return n
    else:
       return(fibonacci(n-1) + fibonacci(n-2))

Na função acima, a condição de término é quando n é igual ou menor que 1. Nesse caso, a função retorna n. Caso contrário, a função se chama duas vezes, uma vez com n-1 e outra vez com n-2, e retorna a soma desses dois valores.

Benefícios e Desvantagens da Recursividade

A recursividade pode tornar o código mais limpo e mais fácil de entender. Problemas complexos que seriam difíceis de resolver usando loops podem ser facilmente resolvidos usando recursividade.

No entanto, a recursividade também tem suas desvantagens. Ela pode levar a um uso ineficiente da memória, já que cada chamada de função requer um bloco de memória separado. Além disso, a recursividade pode levar a um desempenho mais lento, pois a alocação e desalocação de memória requer tempo. Além disso, se a condição de término não for atingida, a função continuará a se chamar indefinidamente, levando a um erro de estouro de pilha.

Em resumo, a recursividade é uma ferramenta poderosa na lógica de programação, mas deve ser usada com cuidado. É importante entender como a recursividade funciona e quais são suas vantagens e desvantagens antes de decidir usá-la.

Agora responda o exercício sobre o conteúdo:

O que é recursividade na ciência da computação e como ela funciona?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Variáveis e Constantes

Próxima página do Ebook Gratuito:

20Variáveis e Constantes

4 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto