Tópicos em alta
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Por que você deveria aprender recursão mesmo que nunca a use?
As soluções recursivas treinam você em algumas mentalidades:
1. Em vez de tentar gerar a solução, você geralmente começa com "qual é a estrutura de uma solução válida" de trás para frente. Para alguns problemas, trabalhar de trás para frente é muito mais fácil.
2. Quando você está resolvendo o problema, é fácil se distrair com todos os "e se". Ao resolver um problema recursivamente, muitas vezes você é forçado a "ignorar" 90% dos problemas e se concentrar em acertar apenas uma parte.
3. O que muitas vezes seria um caso "extremo" em uma solução imperativa é um "caso base" em um on recursivo. Pensar recursivamente às vezes força você a não ignorar os casos extremos. Além disso, as soluções recursivas fazem uso intenso da correspondência de padrões, de modo que você é forçado a pensar em todas as situações que pode encontrar.
Aqui está um exemplo muito bom: Leetcode 335 Self Crossing (problema difícil).
Você viaja em uma trajetória espiral em uma grade (ou seja, sempre vire à esquerda depois de percorrer alguma distância ao norte, sul, leste ou oeste). A questão é: "dada a distância de cada 'segmento' da espiral em ordem, a espiral se cruzou ou não?"
Embora a solução para isso não precise ser uma função chamando a si mesma, a solução "legal" usa propriedades recursivas:
1. Se ainda não encontramos um cruzamento, podemos assumir que não há cruzamentos ou espirais inválidas no passado. Além disso, notamos que não importa se estamos viajando para a esquerda, direita, para cima ou para baixo, porque só podemos virar à esquerda. Tudo o que nos importa é se os segmentos anteriores são paralelos ao nosso turno anterior e a que distância eles estão.
2. Quando viramos à esquerda, há um número extremamente limitado de "segmentos" na espiral em que podemos colidir, o que é "recursivamente" verdadeiro, não importa o quão grande a espiral fique. Existem muitos dados anteriores sobre a espiral que podemos ignorar.
3. Há um número limitado de cenários em seu turno anterior que afetam sua lógica: a) você viajou longe o suficiente para não colidir com nada, b) se não, no que você poderia colidir? (também limitado).
A coisa irritante sobre os hards Leetcode é que eles de repente se tornam fáceis se você encontrar o insight principal. Mas esses insights importantes virão a você com mais naturalidade se você se treinou em programação recursiva.
Não se trata apenas de projetar funções que se chamam - trata-se de se forçar a quebrar o problema de tal forma que ele possa ser resolvido com uma função chamando a si mesma. Quanto mais maneiras você puder resolver um problema, maior será a probabilidade de encontrar uma solução "aha".
Obviamente, não preciso fazer um leetcode na minha profissão, mas preciso encontrar maneiras criativas de quebrar os problemas para que eles se tornem compreensíveis – e o treinamento em recursão definitivamente ajudou nisso.

1,67K
Melhores
Classificação
Favoritos