Às vezes, nas entrevistas, posso usar a recursão para resolver um problema (como adicionar 1
a um número inteiro de precisão infinita) ou quando o problema se apresenta adequado para usar a recursão. Às vezes, pode ser apenas devido ao uso muito da recursão para a solução de problemas; portanto, sem pensar muito, a recursão é usada para resolver o problema.
No entanto, quais são as considerações antes de decidir que é adequado usar a recursão para resolver um problema?
Alguns pensamentos que tive:
Se usarmos recursão em dados que são cortados pela metade todas as vezes, parece que não há problema em usar recursão, pois todos os dados que podem caber em 16 GB de RAM ou até um disco rígido de 8 TB podem ser manipulados por recursão com apenas 42 níveis de profundidade. (portanto, não há excesso de pilha (acho que em alguns ambientes, a pilha pode ter 4000 níveis de profundidade, muito mais que 42, mas, ao mesmo tempo, também depende de quantas variáveis locais você possui, pois cada pilha de chamadas) ocupa mais memória se houver muitas variáveis locais e o tamanho da memória, e não o nível, determinar o estouro da pilha)).
Se você calcular números de Fibonacci usando recursão pura, precisará se preocupar com a complexidade do tempo, a menos que armazene em cache os resultados intermediários.
E que tal adicionar 1
a um número inteiro de precisão infinita? Talvez seja discutível, pois você trabalhará com números com 3000 dígitos ou 4000 dígitos, tão grandes que podem causar um estouro de pilha? Eu não pensei nisso, mas talvez a resposta seja não, não devemos usar recursão, mas apenas um loop simples, porque e se em alguma aplicação, o número realmente precisa ter 4000 dígitos, para verificar se há algum propriedades do número, como se o número é primo ou não.
A questão final é: quais são as considerações antes que você possa decidir usar a recursão para resolver um problema?
1
ao número inteiro de precisão infinita? Você pode dizer, sim, eles reduzem a alguns problemas menores, mas pura recursão não é adequado para ele