Recursividade // Dicionário do Programador

Sdílet
Vložit
  • čas přidán 25. 08. 2024
  • 🤝 𝗛𝗢𝗦𝗧𝗚𝗔𝗧𝗢𝗥 → codft.me/HGNKy...
    Você já ouviu falar, você já ouviu falar, você já ouviu falar sobre recursividade? OK, essa foi péssima mas irresistível.
    Neste episódio do Dicionário do Programador vamos falar sobre um dos conceitos mais básicos sobre programação e que aterroriza a mente de quem está programando a pouco tempo.
    Com vocês mais um novo Dicionário do Programador, falando sobre RECURSIVIDADE.
    ▸ 𝗛𝗢𝗦𝗧𝗚𝗔𝗧𝗢𝗥
    → Cupom Exclusivo com 50% de desconto: CODIGOFONTE
    ☕ 𝗦𝗲𝗷𝗮 𝘂𝗺 𝗺𝗲𝗺𝗯𝗿𝗼 𝗱𝗼 𝗖𝗹𝘂𝗯𝗲 𝗱𝗼𝘀 𝗖𝗗𝗙𝘀
    → codft.me/clube...
    🎧 𝗣𝗹𝗮𝘆𝗹𝗶𝘀𝘁𝘀
    → Dicionário do Programador: codft.me/dicio...
    → Vlog: codft.me/vlog
    → Mão no Código: codft.me/maono...
    → CDF na Estrada: codft.me/cdfna...
    → CAC: codft.me/cac
    👕 𝗟𝗼𝗷𝗮 𝗖𝗗𝗙𝗧𝗩
    → codft.me/loja
    🔔 𝗦𝗶𝗴𝗮 𝗮𝘀 𝗿𝗲𝗱𝗲𝘀 𝗱𝗼 𝗖𝗗𝗙𝗧𝗩
    → Instagram: / codigofontetv
    → Grupo Facebook: groups/...
    👓 𝗦𝗶𝗴𝗮 𝗼𝘀 𝗖𝗗𝗙𝘀
    ▸ 𝗚𝗮𝗯𝗿𝗶𝗲𝗹 𝗙𝗿𝗼𝗲𝘀
    → / gabrielfroes
    → / gabrielroccofroes
    ▸ 𝗩𝗮𝗻𝗲𝘀𝘀𝗮 𝗪𝗲𝗯𝗲𝗿
    → / nessaweberfroes
    → / vanessaweberfroes
    ➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖➖
    𝑵ó𝒔 ❤ 𝒓𝒆𝒄𝒆𝒃𝒆𝒓 𝒑𝒓𝒆𝒔𝒆𝒏𝒕𝒆𝒔, 𝒄𝒂𝒓𝒕𝒂𝒔, 𝒃𝒓𝒊𝒏𝒅𝒆𝒔 𝒆 𝒎𝒊𝒎𝒐𝒔.
    Caixa Postal: 91735 - Cep: 25620-972
    Petrópolis / RJ
    ❗ Edição e Áudio: RW Studio
    🚫 Um vídeo do site Código Fonte - www.codigofont...
    #Recursividade #DicionarioDoProgramador #CDFTV

Komentáře • 112

  • @AndreAntonioDantas
    @AndreAntonioDantas Před 6 lety +82

    Vocês são felizes e não sabem...
    Eu, como programador das antigas (e bota antigas nisso) trabalhei muito em computadores que hoje não passariam de brinquedos. Vocês não sabem o que é programar um microcontrolador 8051 com exultantes 128 bytes (bytes mesmo, não kbytes ou Mbytes). E olhem que tinha compilador C para esse microcontrolador!...
    Porque eu lembrei disso? Porque existiam N problemas que seriam mais facilmente resolvidos em termos de programação utilizando recursividade, porém a recursividade impõe dois grandes problemas para a máquina: ela exige muita memória e é mais lenta.
    Quando você executa uma função, o compilador gera uma sequência de instruções que reserva um espaço de memória para aquela instância de função. É algo que a linguagem esconde do programador, mas que estará lá quando o código fonte for transformado em binário executável.
    Porém, numa função recursiva, cada vez que a função é chamada por si mesma, toda a memória reservada para aquela instância é preservada na pilha de máquina enquanto um novo espaço é aberto sobre ela na pilha. Imagine que uma função seja chamada recursivamente 100 vezes. Teremos então 100 espaços de memória empilhados um sobre o outro, esperando que a instância seguinte retorne. O gasto de memória é absurdo.
    Outro fato é que existe todo um código que é executado para preparar o início da execução da nova instância da função e depois outro código para finalizá-la e transferir os resultados para a instância anterior.
    Num computador moderno, com tanta memória e velocidade, isso não é problema, mas num PC XT com processador 8088 de 4,77 MHz e 256 kB de memória lá dos anos 80, um programa de altíssima recursividade para "mastigação de números" podia levar meia hora ou mais de trabalho, contra 5 ou 10 minutos com um código equivalente não recursivo e sem usar tanta memória.
    Então agradeçam. Vocês são felizes e não sabem.
    Posso fazer uma sugestão? É algo que com certeza é bem diferente do que vocês estão acostumados, cheira a naftalina mas é um problema bem atual.
    Estamos vendo que a era dos processadores que dobravam de velocidade a cada ano já passou e agora a moda é a multiplicação de cores e threads para processamento paralelo.
    O que pouca gente sabe é que os princípios da programação paralela (e sua irmã, concorrente) tem seus primórdios nos anos 80.
    Quando comecei um mestrado em nanotecnologia naquela época, eu precisava de um supercomputador (para os padrões daquela época), e para isso comecei me aventurar no mundo dos chamados Transputers, fabricados por uma empresa chamada INMOS.
    Esses transputers eram processadores que podiam ser colocados em paralelo numa placa mãe e automaticamente dividiam as diferentes threads paralelas e concorrentes sem necessidade de qualquer configuração. Só que para isso, esses processadores tinham uma linguagem especial, chamada OCCAM, muito parecida com C, e que oferecia suporte a funções especiais para paralelizar procedimentos.
    Vocês falaram neste vídeo numa comparação entre um loop e uma função recursiva, sendo que a função recursiva é uma sequência em série. A programação paralela escalável também é comparável a um loop, mas cada interação do loop é uma função que pode ser executada de forma independente por diferentes processadores em paralelo.
    Mas o que essa naftalina dos anos 80 tem a ver com hoje em dia? Simples: os Transputers são os bisavóes dos processadores multi-core e multi-thread. Até mesmo a ideia de processadores Xeon funcionando em paralelo na mesma placa mãe vem dos transputers.
    Só que se muita gente tem dificuldade em pensar um algoritmo de forma recursiva, pensar numa programação em paralelo e concorrente é de deixar o sujeito maluquinho e por isso até hoje é uma parte da ciência da computação que não avançou muito daquela época para hoje.
    Exemplo: uma planilha de cálculo hoje é fácil de programar dentro da progamação clássica, linear, de thread única. O defeito dessa planilha é que ela vai sempre sobrecarregar 1 thread de um core do processador. Não há ganho de desempenho ter um computador com múltiplos cores e threads para processar essa planilha. Para isso a planilha precisaria de uma programação paralela escalável. Cada célula é um processo paralelo para que possa ser processada usando todas as threads de um processador, tenha ele quantas threads e cores possuir.
    Só que aí temos um problema clássico de quem nasceu primeiro, o ovo ou a galinha. Uma célula só pode ser processada se todas as células das quais ela depende já foram processadas. Isso é fácil de fazer num processo linear onde colocamos as células em fila única. Porém, num programa com paralelismo, onde cada célula é executada de forma independente por diferentes processadores e cada célula tem uma velocidade diferente para ser processada, isso se torna um problema bem mais complexo de gerenciar.
    Porque estou tocando nesse assunto? Porque as pessoas acreditam que a tecnologia de software irá absorver essa multiplicação dos cores/threads dos novos processadores e isso não é bem assim. Aliás esta é uma das fronteiras que a engenharia da computação ainda precisa avançar para tirarmos bom proveito dela.

    • @BrExodusZoneDayzServers
      @BrExodusZoneDayzServers Před 5 lety +5

      Mimimimimi...

    • @Ulusamay
      @Ulusamay Před 4 lety

      @@luiscazuriaga2628 sim,quem inventou a luz nem deu os credito pro cara que tentou a primeira vez,passou conhecimento de geração em geração kakaka o famoso foi o ultimo a descobrir,e depois só foram aprimorando

    • @eduardoaihara
      @eduardoaihara Před 4 lety +19

      Caramba, a galera parece q se enfurece por causa de uma frase e ignora o restante da história.
      Apesar de não entender 100% do q foi dito, achei bem interessante saber um pouco como as coisas eram e mais feliz ainda por termos linguagem de alto nível e principalmente que preço de memória hoje é bem mais barato que antigamente. Obrigado por compartilhar seu conhecimento!

    • @thiagosantos3236
      @thiagosantos3236 Před 4 lety +8

      Gostei muito do conhecimento passado meu nobre.

    • @julioulisseslima
      @julioulisseslima Před 3 lety +3

      Cara, não sou tão velho (tenho 36 anos), mas aprendi a dirigir em um fusca ano 78 do meu tio, daqueles que a gente tinha que acelerar com o "calcanhar" para o carro não morrer hehehehe. Ai vejo uma geração de hoje que reclama que a direção hidráulica é mais pesada que a direção elétrica... Em outras palavras obrigado pelo relato histórico, principalmente sobre a ideia de eficiência e aproveitamento de todos os recursos de um computador, pois de fato muitos "programadores", inclusive de grandes corporações, fazem testes de códigos em ambientes controlados, quando funcionam a mil maravilhas, ai soltam a aplicação para uso simultâneo por muitos usuários, e ficam sem entender o motivo do sistema travar do nada, quando ocorreram míseros 90 mil acessos simultâneos... Programar não é a parte mais difícil, entender a regra do negócio e otimizar recursos é o diferencial hoje em dia.

  • @Edson_Staack
    @Edson_Staack Před 6 lety +19

    Mais um vídeo show de bola, com o casal mais simpático do universo! \o/

  • @julianocanuto7592
    @julianocanuto7592 Před 6 lety +14

    Ficou muito bom o exemplo com o barbante. Gostei. Mais um ótimo vídeo. Os erros de gravação são uma comédia a parte kkkkkk

  • @i_am_batman-0309
    @i_am_batman-0309 Před 3 lety +4

    só tenho que agradecer e reconhecer o trabalho de vocês. Obrigado por serem tão fundamentais no nosso aprendizado! :)

  • @jaderpacheco9585
    @jaderpacheco9585 Před 6 lety +18

    Vocês ajudam muito programadores iniciantes (como eu). Obrigado casalzão da por***

  • @carloseduardolima7443
    @carloseduardolima7443 Před 6 lety +5

    Haha!! Ficou muito bommm!
    Faz sobre UI e UX
    Machine learning,
    Big data,
    Deep learning,
    Thread....

  • @FarukAFeres
    @FarukAFeres Před 6 lety +24

    Eu entendi recursividade com uma função fatorial. achei mais simples...
    function fatorial(n) {
    if (n

    • @johnsykes4513
      @johnsykes4513 Před 4 lety +1

      @@morningbae valeu kkk não tinha entendido

    • @kratos11ist
      @kratos11ist Před 3 lety

      @@morningbae Até o num2 chegar a 1 na verdade

    • @thenriquedb
      @thenriquedb Před 3 lety +1

      classica!

    • @danielpolitico1447
      @danielpolitico1447 Před 3 lety +12

      Cara, se você está aqui lendo meu comentário você tem a sorte de ler o único lugar do planeta que tem uma definição de recursividade com lógica, sério, só eu sei explicar saporra. Esquece Google. Vamos lá:
      Recursividade é um fenômeno que ocorre quando uma criação possui a mesma estrutura do seu criador. Pronto, é isso. Se uma impressora imprime um papel não é recursão, mas se um dia uma impressora 3D imprimir outra impressora 3D é recursão. A reprodução dos seres vivos é recursão, pois um ser vivo possui a estrutura do seu pai. O cálculo fatorial é recursividade, porque é definido por etapas de cálculo fatorial. As pessoas têm dificuldade de explicar ou entender recursividade porque é pouco intuitiva a ideia de que uma coisa pode criar algo como a si mesma, porque para o cérebro isso a princípio pode parecer ilógico, já que, sendo assim, como será criado o primeiro criador de todos? A resposta é que o fato de uma coisa ser criada por um criador semelhante não exclui a possibilidade de o primeiro ter sido criado por um criador diferente. No exemplo das impressoras 3D a primeira delas obviamente não seria criada por outra impressora e sim por humanos. Da mesma forma, o primeiro ser humano não foi criado por outro, mas por uma variação genética de outra espécie ou por Deus, se preferir.
      Esse conceito é importante porque quem entende consegue subir um patamar na capacidade de criar e resolver questões, especialmente no empreendedorismo (a ideia de uma impressora imprimindo outra não é disruptiva?), na computação onde o uso de recursividade é corriqueiro, também para linguistas e filósofos, mas também em qualquer área. Ainda aproveitando o exemplo, o sujeito que criou o conceito de fatorial só pôde fazê-lo por entender o conceito, pois, por exemplo, fatorial de cinco é cinco vezes o fatorial de quatro e fatorial de quatro é quatro vezes o fatorial de três e assim consecutivamente até fatorial de 1 que por definição é um, que é a condição de parada. Então existe a chance de você ter aprendido algo aqui que pode ser útil na sua vida.

    • @FarukAFeres
      @FarukAFeres Před 3 lety

      @@danielpolitico1447 quando eu vi essa função de fatorial foi uma epifania. Eu gosto de matemática e ver 4~5 aulas de matemática no ensino médio ser representada por 4 linhas de código foi mágico. O seu texto é lindo e concordo 100% com ele mas programação é complicado quando o indivíduo tem que se empenhar pra conseguir esses momentos de epifania que eu comentei. Infelizmente ele só vai fazer sentido pra quem já entendeu recursividade.

  • @codechannel7304
    @codechannel7304 Před 6 lety +26

    Tenho duas sugestões para vocês falarem no dicionário do programador:
    1º - Web Service
    2º - Biblioteca de Classe
    Além de dar essas sugestões quero Parabenizá-los pelos vídeos postados. Sempre fico ansioso para que postem os seus vídeos. Que bom que nós(CDFs) temos vocês como exemplo. Parabéns pelo trabalho!

    • @codigofontetv
      @codigofontetv  Před 6 lety +3

      Olá Jô! Muito obrigada, ficamos muito felizes em ver depoimentos como o seu!
      Sugestões anotadas.

    • @MartioViss
      @MartioViss Před 6 lety

      Muito bom o vídeo, obrigado.

  • @MrWeblima
    @MrWeblima Před 5 lety +3

    Vocês mandam muito bem! Isso sim é didática.

  • @BrExodusZoneDayzServers
    @BrExodusZoneDayzServers Před 5 lety +3

    Casal mais top desse CZcams 😎👊🙏

  • @danielcardoso6301
    @danielcardoso6301 Před 2 měsíci

    O exemplo foi top, de verdade, simplificar pra depois complicar, são show vocês!!!!!

  • @lincoln_berto
    @lincoln_berto Před 2 lety +1

    Muito bom. Estou estudando para a faculdade e gostei bastante, me ajudou a entender mais sobre o assunto.

  • @rensopa
    @rensopa Před 8 měsíci +1

    Vocês são ótimos!!! Parabéns pelo conteúdo.

  • @marcoantoniosilva795
    @marcoantoniosilva795 Před 2 lety

    Parabéns sempre pela iniciativa de vocês em fazer este vídeo, pois me ajuda muito na minha faculdade, pois a suas explicações sua são tão claras... Parabéns.

  • @andrejunior9616
    @andrejunior9616 Před 5 lety +1

    Ajudou pra caramba na minha prova de técnicas de programação, muito obrigado!!!!

  • @Johnnie_MG
    @Johnnie_MG Před 6 lety +8

    Sou provável formando em ciência da computação 2018, adoro os vídeos de vocês, estou na área de jogos, vocês tem dicas dessa área? Grande abraço.

    • @codigofontetv
      @codigofontetv  Před 6 lety +4

      Olá Johnnie, muito obrigada! Ainda não temos um conteúdo específico pra desenvolvedores de games, mas em breve teremos. Até lá!

  • @longuinni
    @longuinni Před 6 lety +1

    Muito legal. Lembrando que recursividade nada mais é do que a quebra de um problema complexo em pequenos pedaços, em alguns casos é preciso tomar cuidado com problema de stackoverflow após estourar o empilhamento máximo do processador ou da linguagem. Muitas vezes é melhor optar por uma solução não recursiva devido a complexidade do código gerado!! Abraço CFTV! Continuem com o bom trabalho.

  • @joanteixeira1
    @joanteixeira1 Před 9 měsíci

    Essa função enrolar desenrolou minha mente, obrigado!!

  • @wellingtonsilva-vd8bf

    Excelente vídeo vocês estão de parabéns, desde 2022 iniciei meu de superior de ciência de dados, tenho 44 anos sempre amei essa área de tecnologia qual caminho para se especializar na área enquanto estudo, como buscar trabalhos nesse período.

  • @oriadne
    @oriadne Před 6 lety +11

    Boa tarde, belo trabalho. Mas o exemplo do barbante cria um erro de lógica, pois a ideia da recursividade é dividir o problema até que ele não possa mais ser dividido ai só então vir retornando a solução das pequenas partes até a primeira chamada, no caso do barbante se a função enrolar for executada a cada chamada o problema está a se resolver de forma direta e não recursiva.

    •  Před 6 lety +1

      O exemplo do barbante é um laço comum

    • @codigofontetv
      @codigofontetv  Před 6 lety +10

      Oi oriadne! Faz sentido se comentário. Poderíamos ter mostrado o exemplo apenas fazendo as medições e só ao fim da última medição possível "voltar" com as chamadas enrolando o barbante, de uma vez só. Sem dúvida ficaria melhor. :D
      Muito obrigado pelo seu feedback.

  • @bfzff7608
    @bfzff7608 Před 3 lety +2

    Ótima explicação!

  • @razor0wn3d
    @razor0wn3d Před 6 lety +4

    Mandaram bem.

  • @paulosoads856
    @paulosoads856 Před 5 lety +3

    Quer ver uma recursão legal?
    faz assim:
    -Abra o bloco de notas e escreva
    start cmd
    -Salve o arquivo como o nome cmd.bat
    -abra o arquivo
    Esteja com gerenciador de tarefas aberto. Você vai precisar

    • @Ulusamay
      @Ulusamay Před 4 lety +1

      mano ala tu é um Corno kakakaka fiz isso fez um loop da poxa,quase eu não consiguia fechar os prompts ala kakakakaakak mas foi top dá uma ideia de virus simples kdaskkas

    • @tiagodmota5840
      @tiagodmota5840 Před 3 lety

      Quebrou uma das leis, não é recursividade autêntica.

  • @CamilaCPio
    @CamilaCPio Před 8 měsíci

    Coisa boa! Obrigada pelo conteúdo incrivel! Vocês são demais

  • @paulocristo1
    @paulocristo1 Před 2 lety

    aprendi recursividade em um livro que comprei java8 e des daquela epoca sempre uso em php swift e tudo . muito bom ecenomiza e fica top

  • @brunofelix5434
    @brunofelix5434 Před 6 lety

    Ótimo vídeo... conheci a pouco tempo o canal de vcs e já vi quase todos os vídeos... adorei vcs.

  • @Samuel-Ferreira-Inocencio
    @Samuel-Ferreira-Inocencio Před 3 měsíci

    Em 2024 estou aprendendo programação com apoio da Alura. Recursividade ainda é um quebra-cabeça que estou desvendando.

  • @RobsonAlvesJJ
    @RobsonAlvesJJ Před 5 lety +1

    Foi muito bom parabéns.....

  • @flavioaugusto4106
    @flavioaugusto4106 Před 6 lety +2

    Muito bom parabéns!!

  • @JoseChiniapala-jt1fy
    @JoseChiniapala-jt1fy Před 3 měsíci

    Vocês me ajudaram muito

  • @marciogomes3090
    @marciogomes3090 Před rokem

    Eu só entendi com a metáfora da linha lakakakakakkaka Obrigado! Adorei

  • @danielschneider5251
    @danielschneider5251 Před 2 lety

    Estou aprendendo python.
    Hoje estava escrevendo um código e me deparei com um problema.
    A lógica não estava acontecendo da maneira que eu esperava.
    Consegui solucionar essa questão aplicando a recursividade.
    Mais uma lição de aprendizado para o meu banco de dados neural kkkk

  • @gabrieldavid7664
    @gabrieldavid7664 Před rokem

    Muito bom, obrigado pela aula!

  • @boscherof
    @boscherof Před 6 lety +1

    Tenho sonho em entrar profissionalmente nesse mundo, mas como? É muito abrangente ! Ó Deus da programação, me ajuda !

    • @kratos11ist
      @kratos11ist Před 3 lety

      E aí, conseguiu emprego na área depois de 2 anos?

  • @fontanadnb
    @fontanadnb Před 5 lety +2

    Faltou dizer das desvantagens da recursividade como alta taxa de alocação de memória, dependo do caso. A recursividade as vezes parece a forma menos complexa de resolver o problema, mas pode causar grandes perdas de performance, etc, etc, etc.

  • @andresousa6820
    @andresousa6820 Před 5 lety +4

    Uma boa forma de treinar Recursividade são alguns dos problemas usados em competições de programação (como a OBI e a Maratona de Programação).
    Já ouviram falar da Olimpíada Brasileira de Informática (OBI) ou da Maratona de Programação ? são competições voltada para alunos tanto do Ensino Fundamental e Médio (OBI) quanto para alunos de faculdade (Maratona) com foco em programação competitiva (algoritmos e estruturas de dados principalmente).
    Vai muito em linha com o conteúdo do canal de vocês.
    Pode nos ajudar a difundir as competições de programação pelo Brasil ? Acredito que está bem alinhado com o conteúdo do seu canal e seria de grande ajuda. Caso haja interesse entre em contato.

    • @caldasyahoo
      @caldasyahoo Před 9 měsíci

      Cara vc me deu a dica de ouro para o que eu estava procurando, grato

  • @alexiasantos6249
    @alexiasantos6249 Před 11 měsíci

    Muito obrigada ! foi muito util

  • @matheuscastro4124
    @matheuscastro4124 Před 3 lety +1

    Adiciona no dicionário o termo "DLL - Dynamic Link Library"

  • @debaixodatampa
    @debaixodatampa Před 4 lety

    Ô menina... Eu sou bom nessa função ENROLAR aí hein!!! hahahahah
    Muito obrigado pelo vídeo elucidativo!

  • @eduardolima1227
    @eduardolima1227 Před 6 lety +2

    Eu sinto falta de um canal ou assunto que vá além do abordado aqui, sou formado em Engenharia de Computação à 12 anos mas trabalho à pelo menos 21 anos na área, desde década de 90, e não há praticamente nada que ultrapassa o academicismo no CZcams, deixo esta dica para este canal, pois as experiências cotidianas na área computacional e de mercado têm muito a dizer e a contribuição disto é de grande valor, mas caso saibam de algum canal neste aspecto que possam indicar, por favor me digam o link, no mais parabéns pelo trabalho, vou ajudando com os likes, na medida do possível.

    • @codigofontetv
      @codigofontetv  Před 6 lety +3

      Oi Eduardo, muito obrigado pelo seu comentário. Quando tiver um tempinho assista outros vídeos do nosso canal. Temos muitos vídeos, principalmente os vlogs, onde falamos mais do dia a dia de nossa profissão, inclusive, esse é um dos grandes objetivos do canal.
      Grande abraço e obrigado pela sua companhia por aqui.

    • @eduardolima1227
      @eduardolima1227 Před 6 lety +2

      @@codigofontetv Eu que agradeço, a iniciativa de vocês é de grande valor, parabéns!

  • @heightSky
    @heightSky Před 7 měsíci

    muito bom

  • @pr.rafaelnascimento
    @pr.rafaelnascimento Před rokem

    Excelente explicação

  • @jonatanmsd
    @jonatanmsd Před rokem

    Video top! Boa aula dmais!!!

  • @canon61837
    @canon61837 Před 6 lety

    Muito bom essa serie de videos!! parabéns!

  • @jerryaugusto95
    @jerryaugusto95 Před 5 lety +2

    INTEROPERABILIDADE nos próximos vídeos, por favor!

  • @catalunham.j.1895
    @catalunham.j.1895 Před 4 lety

    Fiz um estes dias, para um caso de navegacao em cat e subcat de indices...

  • @hammersteinir
    @hammersteinir Před 4 lety +1

    Ótimo vídeo! Agora... Prq essa quantidade de canetas? kk

  • @AP-gc5ss
    @AP-gc5ss Před 5 lety +1

    +Código Fonte TV serio mesmo que você não vão explicar o algortimo que mostraram???

  • @ermesondesousaflamengo9293

    olá gostaria de saber qual é o melhor programa de software para se especializar e iniciar na carreira na programador ?(sei que essa pergunta não tem haver com vídeos ,mas só uma dúvida minha )grato pela resposta

  • @MatheusdaRochaSena
    @MatheusdaRochaSena Před rokem

    Gente, Muito bom o vídeo mas eu realmente não entendi a aplicação da função multiplica.... Eu consigo ver o num2( 4 ) reduzindo, mas eu não vejo o 5 somando.
    -> Toda vez que a função é chamada o num2 reduz 1 ao entrar no novo parâmetro funcionando como o passo de um laço. parando no else if, quando o número for 1, porém.... ela retorna para onde? kkkk fiquei confuso, por exemplo, se ela foi chamada por ela mesma 5 vezes ela dá return para a quarta, ou para o programa principal?...... Acho que eu tô pegando, alguns neurônios cansados a mais e eu entendo a abstração até o fim da tarde...
    -> Mas o que eu não visualizo é o "return (num1 + multiplica(num1, num2 - 1));" Eu tô estudando recursividade agora, juntando tudo que eu sei, o programa entraria na função antes de somar o num1 ( 5 ), não somando ele, reduzindo o 4 mas não somando o 5, gerando um erro. Com certeza estou errado, mas realmente não consigo ver o num1 somando ali, talvez por eu ter começado recursividade agora. Se alguém puder ajudar nessa dúvida agradeceria muito.

  • @Bitcoio
    @Bitcoio Před 4 lety +1

    Toda recursão gera uma pilha?

    • @tiagodmota5840
      @tiagodmota5840 Před 3 lety

      Até onde eu sei sim. Mas consulta a documentação da linguagem pra ter certeza de como o compilador vai lidar com isso.

  • @marceloh6206
    @marceloh6206 Před rokem

    03:55 vocês são chatos, mas amamos vocês

  • @carlosdemetrio2647
    @carlosdemetrio2647 Před 6 lety

    Tava aprendendo isso semana passada na faculdade kkk

    • @codigofontetv
      @codigofontetv  Před 6 lety +1

      Que coincidência! Espero que o conteúdo tenha complementado as aulas. Abraços.

  • @andreylima5469
    @andreylima5469 Před 3 lety

    Então podemos dizer que a recursividade é um laço?

    • @tiagodmota5840
      @tiagodmota5840 Před 3 lety +1

      Aparentemente se comporta como um laço, mas por debaixo dos panos cada chamada recursiva armazena valores na pilha de chamadas, e quando o caso base é satisfeito a recursão acontece de forma reversa até chegar na função pai de todas as chamadas, os resultados vão sendo desempilhados e retornados um a um. Pra entender plenamente você tem de estudar Algoritmos e Estruturas de Dados.

  • @gabrielsantos-mo2nu
    @gabrielsantos-mo2nu Před 6 měsíci

    tó vendo isso em java e não tó entendendo essa lógica

  • @geovannaaraujo2849
    @geovannaaraujo2849 Před 3 lety

    5:09 Como ficaria esse exemplo em Python? Alguém pode me responder por favor?

    • @ImLuanGFX
      @ImLuanGFX Před 3 lety

      def multiplica(num1, num2):
      if num1 == 0 or num2 == 0:
      return 0
      elif num2 == 1:
      return num1

      else:
      return (num1 + multiplica(num1, num2 - 1))
      print(multiplica(5, 4))

  • @juansoares2108
    @juansoares2108 Před 6 lety

    Estou com dúvidas será que alguém pode me responder?
    Qual é a diferença entre C C++ e C#?
    Desde já agradeço!

    • @nasrudin3
      @nasrudin3 Před 5 lety +3

      Juan, C é uma LP do paradigma estruturado, compilada, criada em 1972 por Dennis Ritchie no Bell Labs - que na época pertencia à AT&T - considerada mãe de inúmeras LPs modernas. C++ é uma LP do paradigma orientado a objetos, compilada, baseada em C, criada por Bjarne Stroustrup em 1985 no Bell Labs. C# é uma LP do paradigma orientado a objetos, híbrida - ou seja, é primeiro compilada e depois interpretada - lançada em 2002 pela Microsoft.
      Outra LP importante é Java - orientada a objetos, híbrida - lançada pela Sun Microsystems em 1995, e hoje desenvolvida pela Oracle.

    • @tiagodmota5840
      @tiagodmota5840 Před 3 lety +1

      C veio antes das duas (C++ e C#). Ela foi feita em 1972 num laboratório de pesquisa e inovação subsidiária da Nokia, chamado AT&T Bell Laboratories, com o propósito de criar um sistema operacional para o computador PDP-11, esse sistema é o Unix, a base do Linux atual, feito por Linus Torvalds. (Bell Laboratories foi responsável por criar uma série de tecnologias usadas hoje, como os transistores, os LEDs, etc. É um verdadeiro mar de inovações importantes)
      C++ surgiu com o propósito de ser um C com classes, ou seja, um C com programação orientada a objetos, mas ao longo dos anos ela se tornou uma linguagem recheadada de mais paradigmas e completamente à parte, apesar de ainda ser possível misturar código C com C++ e os seus compiladores suportarem código em C puro.
      C# foi criada pela Microsoft pra competir com o Java , não tem nada a ver com C e C++, apesar destas duas terem influenciado a criação de Java pela Sun Microsystems, posteriormente comprada pela atual Oracle.
      Assim como Java não tem nada a ver com JavaScript, C# não tem nada a ver com C/C++.

  • @jonaspetty8767
    @jonaspetty8767 Před 2 lety

    Eu entendo a recursividade, mas minha mente da muito nó na hora de refatorar ou até mesmo de implementar, putz grila

  •  Před 6 lety +1

    Porque não usar um while para resolver um problema de recursividade?

    • @tiagodmota5840
      @tiagodmota5840 Před 3 lety

      Problemas que são melhores resolvidos com recursividade são mais chatos de entender, eles só apresentaram o conceito com exemplos simples que com while daria pra resolver mais facilmente mesmo.

    •  Před 3 lety

      @@tiagodmota5840 acho que em baixo nível, faz diferença. Mas a maioria fica muito mais simples de visualizar o problema sem recursividade. Ai fica a se pensar, deixar simples ou veloz

    • @tiagodmota5840
      @tiagodmota5840 Před 3 lety +1

      @ Alguns problemas ficam mais complexos de serem resolvidos com while, um exemplo é rotação de nós em Árvores Binárias de Busca. Recursividade consome mais memória e é mais lenta que um loop comum, mas facilita a implementação de problemas que possuem uma natureza recursiva inerente:
      "Ao tentar resolver o problema, encontrei obstáculos dentro de obstáculos. Por isso, adotei uma solução recursiva." - Aluno S.Y.

    •  Před 3 lety

      @@tiagodmota5840 baita exemplo. Muito mais simples trabalhar com ponteiros em recursividade

    • @EmanoelLucas8552
      @EmanoelLucas8552 Před 3 lety

      na verdade, tem problema que só dá pra ser resolvido com recursividade

  • @phelipefox
    @phelipefox Před 6 lety +2

    Por que há tantas canetas em teus bolsos?!?

  • @pedrolobo1081
    @pedrolobo1081 Před 6 lety

    Fiquei esperando a caneta no exemplo =/

  • @OsTaualegres
    @OsTaualegres Před 4 lety

    3:58 não tem recursividade nenhuma nessa relação ❤️

  • @vendettabr2022
    @vendettabr2022 Před 4 lety

    Putz grilo, ainda nao entendi como funciona recursividade, q saco mano >:(
    Ah deixa quieto! Vou rebobinar minhas fita cassete aqui...

  • @wellingtonaraujo5418
    @wellingtonaraujo5418 Před 3 lety

    boa aula =) asudhasuidasiud

  • @andreranulfo-dev8607
    @andreranulfo-dev8607 Před 4 lety

    Poxa... Citar as três leis da robótica e citar "Eu, Robô" sem falar no seu autor, Isaac Azimov, foi quase um sacrilégio. Poderiam ter pelo menos citado que o filme foi baseado nesse clássico da ficção-científica.

  • @LucasNunesK
    @LucasNunesK Před 6 lety

    Recomendo esse vídeo sobre recursividade: czcams.com/video/NKymAD4pJZI/video.html

    • @codigofontetv
      @codigofontetv  Před 6 lety

      😱😱😱 gênio!!!

    • @tiagodmota5840
      @tiagodmota5840 Před 3 lety

      Já eu recomendo esse vídeo sobre recursividade: czcams.com/video/NKymAD4pJZI/video.html

  • @andreranulfo-dev8607
    @andreranulfo-dev8607 Před 4 lety

    Poxa... Citar as três leis da robótica e "Eu, Robô" sem falar no seu autor, Isaac Azimov, foi quase um sacrilégio. Poderiam ter pelo menos citado que o filme foi baseado nesse clássico da ficção-científica.

  • @1919Reid
    @1919Reid Před 11 měsíci

    function fatorialComRecurssividade(n) {
    if (n === 0) return 1
    return n * fatorialComRecurssividade(n - 1)
    }
    console.log(fatorialComRecurssividade(5))
    /*
    NOTA!!! EU SO ESCREVI "n = 3", por exemplo, para lembrar que o numero se refere a "n".
    ordem dos acontecimentos->
    5 * ((n = 5)-1) presta a a atenção na primeira vez "n" vale 5, ok;
    4 * ((n = 4)-1) na segunda vez "n" vale 4 os dois "n" tanto o do calculo de multiplicação quanto o do "n"-1;
    3 * ((n = 3)-1) depois vale 3
    2 * ((n = 2)-1) depois vale 2
    1 * ((n = 1)-1) e por fim vale 1
    //recurssividade
    ((n = 1)-1) = 0 ativa o booleano->
    if (n === 0) return 1
    //lembrando estou chamando novamente a função do inicio então "n" assume o valor do resultado do retorno anterior, no caso n = 1
    1 * (1) = 1
    essa parte aqui -> 2 * ((n = 2)-1) esta esperando para receber o retorno do resultado da recurssão anterior ou seja 1, ficando-> 2 * (1) que resulta em 2
    essa parte aqui -> 3 * ((n = 3)-1) esta esperando para receber o retorno do resultado da recurssão anterior anterior ou seja 2, ficando -> 3 * (2) que resulta em 6
    essa parte aqui -> 4 * ((n = 4)-1) esta esperando para receber o retorno do resultado da recurssão anterior anterior ou seja 6, ficando -> 4 * (6) que resulta em 24
    essa parte aqui -> 5 * ((n = 5)-1) esta esperando para receber o retorno do resultado da recurssão anterior anterior ou seja 24, ficando-> 5 * (24) = que resulta por fim em 120