Funções Recursivas em Javascript

Contextualização

A resolução deste desafio envolve a aplicação de uma série de conceitos fundamentais em programação funcional. Abaixo, abordaremos alguns desses conceitos-chave:

Algoritmos e Lógica de Programação

Algoritmos são sequências de instruções bem definidas que resolvem um problema ou realizam uma tarefa específica. Em programação, a lógica de programação é essencial para criar algoritmos eficientes e funcionais. Neste desafio, estaremos projetando vários algoritmos para resolver problemas do mundo real com o paradigma funcional.

Loops

Loops (ou laços) são estruturas de controle que permitem que uma seção de código seja executada repetidamente. Eles desempenham um papel fundamental na iteração sobre dados e na execução de ações repetitivas.

Paradigma Funcional

O paradigma funcional é uma abordagem de programação que trata as funções como cidadãs de primeira classe e enfatiza a imutabilidade e a programação declarativa. Em nossa solução, aproveitaremos os princípios do paradigma funcional para criar funções claras e concisas.

Funções Recursivas

Funções recursivas são funções que chamam a si mesmas para resolver um problema, geralmente com casos base e casos recursivos. Neste desafio, estaremos trabalhando com funções recursivas para resolução dos desafios propostos.

Tipos de Funções Recursivas

Existem dois tipos principais de funções recursivas: recursão direta e recursão indireta. A recursão direta ocorre quando uma função chama a si mesma diretamente. Por outro lado, a recursão indireta ocorre quando uma função chama outra função que, por sua vez, chama a primeira função.

Técnica Trampoline

A técnica trampoline é uma técnica de otimização de funções recursivas que evita o estouro da pilha (stack overflow) ao transformar chamadas recursivas em um loop iterativo. Isso é particularmente útil quando trabalhamos com funções recursivas profundas.

Agora que entendemos esses conceitos, vamos aos desafios!

Desafio 1 - Calculando impostos
Rock é um contador talentoso que trabalha com uma variedade de clientes. Recentemente, ele recebeu um novo cliente, Alice, que precisa calcular seus impostos anuais. Alice ganhou $50.000 no ano passado e deseja saber quanto ela deve pagar em impostos com base em uma taxa de imposto progressiva.

Desafio 2 - Contador de digitos
Alice precisa verificar quantos dígitos há em seu número de telefone, pois deseja memorizá-lo.