< Return to Video

COT CAP08 2024 VA01 RECURSIVIDADE POR QUE ELA EXISTE

  • 0:08 - 0:10
    Tem alguns assuntos no mundo
    da programação
  • 0:10 - 0:14
    que quando a gente aprende,
    a nossa cabeça dá cambalhota.
  • 0:14 - 0:18
    E recursão ou recursividade
    é um desses assuntos.
  • 0:18 - 0:21
    Mas pode ficar tranquilo,
    pode ficar tranquila,
  • 0:21 - 0:24
    porque muito mais importante
    do que a gente descobrir
  • 0:24 - 0:25
    todos os problemas do mundo
  • 0:25 - 0:28
    que poderiam ser resolvidos
    com recursividade,
  • 0:28 - 0:31
    é importante a gente entender
    o funcionamento
  • 0:31 - 0:33
    e o porquê dessa estratégia.
  • 0:33 - 0:39
    Recursividade é basicamente quando
    uma função chama a ela mesma.
  • 0:39 - 0:41
    É exatamente isso que você escutou.
  • 0:41 - 0:44
    Quando eu tenho um código,
    onde uma função,
  • 0:44 - 0:49
    lá no meio das linhas dela,
    está chamando a si própria.
  • 0:49 - 0:53
    Eu sei que parece uma coisa confusa,
    esquisita e até desnecessária,
  • 0:53 - 0:56
    mas, na verdade,
    a gente tem muitos exemplos
  • 0:56 - 0:58
    do por que isso seria preciso.
  • 0:58 - 1:04
    Imagine que você tem na sua casa
    aquela famosa gaveta da bagunça,
  • 1:04 - 1:06
    aquela gaveta que é uma curva de rio
  • 1:06 - 1:11
    e a gente vai jogando tudo
    que não sabe onde guardar dentro dela.
  • 1:11 - 1:16
    E aí, nós criamos uma função
    chamada organizar.
  • 1:16 - 1:21
    E quando a gente abre essa gaveta,
    nós vamos ativar a função organizar.
  • 1:21 - 1:26
    Só que a primeira coisa que a gente
    encontra lá dentro é uma caixa.
  • 1:26 - 1:29
    E aí, eu teria duas alternativas
    diferentes.
  • 1:29 - 1:33
    Eu poderia criar uma função
    para organizar a gaveta
  • 1:33 - 1:36
    e ignorar o que eu encontrasse
    dentro dela,
  • 1:36 - 1:39
    ou eu tenho a recursividade.
  • 1:39 - 1:41
    Eu posso estabelecer a seguinte regra,
  • 1:41 - 1:44
    ao encontrar uma caixa,
  • 1:44 - 1:48
    pare um pouco a execução da função
    organizar da gaveta
  • 1:48 - 1:52
    e chame novamente a função organizar
    para a caixa.
  • 1:52 - 1:57
    Isso é recursividade,
    porque dentro da função organizar
  • 1:57 - 2:01
    eu tenho uma chamada
    para a própria função organizar.
  • 2:01 - 2:05
    E aí, seguindo nesse exemplo,
    imagina que dentro dessa caixa
  • 2:05 - 2:09
    eu tenha ainda
    uma outra caixa guardada lá.
  • 2:09 - 2:10
    O que eu vou fazer?
  • 2:10 - 2:14
    Chamar de novo a função organizar
    para essa caixa menor.
  • 2:14 - 2:17
    E isso vai se repetindo.
  • 2:17 - 2:20
    Essa chamada à função organizar
    vai acontecendo
  • 2:20 - 2:23
    mais e mais e mais vezes
  • 2:23 - 2:26
    até que aconteça algo
    muito importante.
  • 2:26 - 2:29
    O que a gente chama de critério
    de parada.
  • 2:29 - 2:33
    Quando a minha função
    vai parar de chamar a si mesma?
  • 2:33 - 2:36
    Quando ela vai poder retornar
    algo concreto?
  • 2:36 - 2:38
    Eu posso estabelecer
    como critério de parada
  • 2:38 - 2:43
    para esse meu exemplo,
    eu ter organizado aquele espaço.
  • 2:43 - 2:47
    Então, eu chamei a função organizar
    para a minha gaveta,
  • 2:47 - 2:49
    chamei novamente para a minha caixa,
  • 2:49 - 2:52
    chamei de novo
    para a minha caixa menor,
  • 2:52 - 2:56
    quando eu tiver a minha caixa menor
    devidamente organizada,
  • 2:56 - 3:02
    eu posso simplesmente terminar
    essa execução e voltar para a anterior.
  • 3:02 - 3:06
    E aí eu termino de organizar
    aquela caixa intermediária.
  • 3:06 - 3:10
    E aí eu termino de organizar
    a minha gaveta.
  • 3:10 - 3:13
    A recursividade
    já faz parte de tarefas
  • 3:13 - 3:16
    que a gente realiza dia após dia.
  • 3:16 - 3:20
    E pode ser um pouco estranho começar
    a pensar em traduzir isso para código.
  • 3:20 - 3:23
    Inclusive,
    recursividade não é a resolução
  • 3:23 - 3:25
    de todos os problemas do mundo.
  • 3:25 - 3:27
    Por que você percebeu
    que eu vim falando
  • 3:27 - 3:30
    que a gente interrompia uma execução
  • 3:30 - 3:33
    para começar uma nova chamada à função?
  • 3:33 - 3:36
    Isso faz
    com que o nosso sistema operacional
  • 3:36 - 3:39
    precise empilhar
    esse monte de chamadas.
  • 3:39 - 3:43
    E é óbvio que uma hora
    isso vai ser impossível,
  • 3:43 - 3:45
    porque não tem mais espaço em memória.
  • 3:45 - 3:50
    É aí que acontece o famoso estouro de pilha.
  • 3:50 - 3:51
    É o nosso sistema falando,
  • 3:51 - 3:54
    meu amigo,
    minha amiga,
  • 3:54 - 3:58
    não dá para continuar brincando
    com esse monte de chamadas de função,
  • 3:58 - 4:00
    eu simplesmente
    vou crachar o programa,
  • 4:00 - 4:04
    eu vou encerrar ele,
    e aí acabou com a sua brincadeira.
  • 4:04 - 4:07
    Apesar da recursão
    ou da recursividade
  • 4:07 - 4:11
    não ser sempre a melhor saída
    para resolver um problema,
  • 4:11 - 4:13
    em alguns casos
    é a única saída possível.
  • 4:13 - 4:18
    Como até mesmo percorrer um texto
    procurando determinados elementos.
  • 4:18 - 4:21
    Por isso,
    existe um detalhe muito importante
  • 4:21 - 4:24
    na sua jornada de pessoa desenvolvedora,
  • 4:24 - 4:27
    que é entender
    os princípios da recursão,
  • 4:27 - 4:30
    para que quando chegar a hora
    de você precisar aplicar
  • 4:30 - 4:34
    em algum problema,
    tudo já esteja no lugar certo.
Title:
COT CAP08 2024 VA01 RECURSIVIDADE POR QUE ELA EXISTE
Video Language:
Portuguese, Brazilian
Duration:
04:37

Portuguese, Brazilian subtitles

Incomplete

Revisions Compare revisions