impJS / impAprendaJS

Grupo de estudos para pessoas que querem aprender JavaScript.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Semana 3 - Dúvidas

vitorbritto opened this issue · comments

Inicio: 02/03/2014 ~ Fim: 08/03/2014

Este tópico é dedicado para postagem de dúvidas referentes a Semana 3.

Instruções: https://github.com/impJS/impAprendaJS/wiki/Semana-3

Uma coisa que eu até entendo, mas acho meio confuso, são as funções recursivas.

Alguém teria uma explicação, digamos, "mais didática" e se possível com exemplos de uso no mundo real? Tipo, além de calcular fatorial... já precisou usar esse tipo de função em algum projeto? xD

Eu não me lembro em ter usado função recursiva ultimamente. :neckbeard:

O princípio da recursão é quando você pode chamar uma função dentro dela mesma para resolver um determinado problema. A recursão é utilizada em situações onde você queira "automatizar" as repetições até chegar na solução desejada. Lembrando que você precisa de um critério para encerrar a recursão (uma estrutura de condição).

Uma método prático para criar uma função recursiva, é entender o problema em questão e utilizar uma forma generalizada. Você parte de um problema maior até chegar em problemas menores. Com isso, você procura solucionar os problemas menores e combina as soluções depois.

Algumas observações:

  • Você pode utilizar uma estrutura de laço for para fazer uma iteração ao invés de usar uma função recursiva
  • Você precisa de um critério de parada na função recursiva, do contrário vai dar estouro de pilha, ou seja, vai retornar um erro no programa
  • Algoritmos recursivos tendem a necessitar de mais tempo e gastam mais memória

Estou dando uma brincada com TDD agora, aprendendo com uns caras feras que conheci, e uma das coiss que se usa bastante (ao menos nos katas) são funções recursivas. O código acaba ficando muito pequeno e legível.

Pra entender essas funções, aconselho dar uma boa estudada em TDD e brincar com alguns katas. Vai ajudar bastante a entender esse ponto :)

Obrigado pelas explicações e dicas @vitorbritto e @fdaciuk. =)

As vezes isso me dá um nó na cabeça. HeHe. =P

Pelo jeito então, acabamos utilizando loops mesmo com mais frequência.

Agora sobre TDD, esse é um dos assuntos que quero aprender também.

Dei uma pesquisada rápida sobre esse lance de Katas, a aplicação disso em desenvolvimento de software é bem interessante, não conhecia isso ainda.

Opa.. tranquilo @HenriqueSilverio :)

A questão do TDD é legal vc fazer os katas com alguém que manje um pouco pelo menos.. assim dá pra aprender algumas coisas bem legais e dicas de como escrever código bom!

Peguei algumas dicas com uns caras fera.. estou preparando pra compilar isso em um blogpost xD

Olha só, coincidência ou não, um amigo compartilhou um link para um plugin que auxilia na criação de estruturas em formato de árvore. Fui dar uma olhada no code, e eis que me deparo com o uso de uma função recursiva nele. xD https://github.com/raphamorim/treeData.js/blob/gh-pages/js/treeData.js#L26

Tá ae um bom uso de recursão :)

👍