MELHOR EXPLICAÇÃO SOBRE RECURSÃO QUE JÁ VI. Outros professores falavam: Treina que uma hora você entende. Esse professor não. Ele explicou de uma maneira SUPER compreensível. Parabéns
Valeu antes eu achava que o if comparava apenas uma vez, juro que achei que daria certo apenas com while, obrigado por postar os videos estão me ajudando bastante.
Caro Professor suas aulas são excelentes se vc puder colocar algum material sobre ponteiro ficaria muito agradecido pois tenho uma certa dificuldade em para entender essa parte
Professor, bela explicação... porém eu raciocinei de outro forma o cálculo, penso eu que também pode ser memorizado da seguinte forma: Se chamo "5" na função, por exemplo: fatorial(5) 5*4=20 -> 20*3=60 -> 60*2=120 -> 120*1=120 achava eu que ele calculava assim!!! Pois dá o mesmo resultado.
A quantidade de memória alocada pode ser um problema. Se eu usar um laço 'for' a maneira como ela aloca a memória é equivalente ou ela usa uma outra lógica? Por exemplo, se eu usar uma função recursiva com 100 iterações serão alocados a mesma quantidade de memória que 100 iterações de um laço 'for', ou o laço for usa outra maneira de manipular os dados?
A recursividade aloca memória para cada chamada, isso é chamado de pilha toda essa pilha é amontoada e por fim desamontoada. Por exemplo, se vc fizer uma função recursiva e dentro dessa função existir uma declaração de vetor, será declarado um vetor para cada chamada, dependendo da situação é melhor usar laço
Ricardo Vieira Eu entendi isso, talvez eu não fui claro, mas o que eu quero saber é se os laços "for" ou "while" usam a mesma lógica de pilha ou alguma outra lógica para serem executados. Obrigado pela sua atenção.
Ahh sim. Obrigado pela sua atenção cara. Eu estava vendo aqui, e os algoritmos realmente são diferentes, porque em microcontroladores a pilha de endereço de memória é muito pequena, no último que programei tinha apenas 8 níveis, ou seja, se eu usasse uma função recursiva 9 vezes ele ia estourar a pilha e eu teria que criar uma condição apropriada pra isso que normalmente é o reset, mas em laços while ou for não existe limite de iterações, porque é necessário usar um while de loop infinito em todo microcontrolador pra ele funcionar, e se fosse a mesma lógica, isso ia estourar a pilha. Acho que isso responde minha pergunta hahahha. Pelo jeito, a função recursiva usa o comando equivalente em Assembly "call" pra funcionar, enquanto os laços, usam a comando em Assembly "goto".
MELHOR EXPLICAÇÃO SOBRE RECURSÃO QUE JÁ VI. Outros professores falavam: Treina que uma hora você entende. Esse professor não. Ele explicou de uma maneira SUPER compreensível. Parabéns
Estou digitindo com os pés porque com as mãos estou aplaudindo, muitíssimo obrigado Professor pelo seu "Dom" de ensinar!!!
05 aulas sobre ponteiros foram gravadas e serão publicadas nos próximos dias, fique de olho no nosso blog! Link na descrição do vídeo! :)
OBRA PRIMA ESSE VÍDEO. ME SALVOU DO FAZER SEM ENTENDER. O FAMOSO APERTAR PARAFUSOS.
Sabe muito
Parabéns! Excelente aula!
Seu raciocínio está certo. Apenas a forma como foi programado na víideo aula é que é diferente. Fica mais fácil como foi programado.
Valeu antes eu achava que o if comparava apenas uma vez, juro que achei que daria certo apenas com while, obrigado por postar os videos estão me ajudando bastante.
Caro Professor suas aulas são excelentes se vc puder colocar algum material sobre ponteiro ficaria muito agradecido pois tenho uma certa dificuldade em para entender essa parte
TOP!!
Professor, bela explicação... porém eu raciocinei de outro forma o cálculo,
penso eu que também pode ser memorizado da seguinte forma:
Se chamo "5" na função, por exemplo:
fatorial(5) 5*4=20 -> 20*3=60 -> 60*2=120 -> 120*1=120
achava eu que ele calculava assim!!! Pois dá o mesmo resultado.
A quantidade de memória alocada pode ser um problema. Se eu usar um laço 'for' a maneira como ela aloca a memória é equivalente ou ela usa uma outra lógica?
Por exemplo, se eu usar uma função recursiva com 100 iterações serão alocados a mesma quantidade de memória que 100 iterações de um laço 'for', ou o laço for usa outra maneira de manipular os dados?
A recursividade aloca memória para cada chamada, isso é chamado de pilha toda essa pilha é amontoada e por fim desamontoada. Por exemplo, se vc fizer uma função recursiva e dentro dessa função existir uma declaração de vetor, será declarado um vetor para cada chamada, dependendo da situação é melhor usar laço
Ricardo Vieira Eu entendi isso, talvez eu não fui claro, mas o que eu quero saber é se os laços "for" ou "while" usam a mesma lógica de pilha ou alguma outra lógica para serem executados. Obrigado pela sua atenção.
Desculpe acho q faltou uma parte da explicação o loop utiliza as msm variaveis (Endereços de memória)
Não da pra te dizer qual forma de trabalhar é a mais eficiente para cada situção existe um algoritmo
Ahh sim. Obrigado pela sua atenção cara. Eu estava vendo aqui, e os algoritmos realmente são diferentes, porque em microcontroladores a pilha de endereço de memória é muito pequena, no último que programei tinha apenas 8 níveis, ou seja, se eu usasse uma função recursiva 9 vezes ele ia estourar a pilha e eu teria que criar uma condição apropriada pra isso que normalmente é o reset, mas em laços while ou for não existe limite de iterações, porque é necessário usar um while de loop infinito em todo microcontrolador pra ele funcionar, e se fosse a mesma lógica, isso ia estourar a pilha. Acho que isso responde minha pergunta hahahha. Pelo jeito, a função recursiva usa o comando equivalente em Assembly "call" pra funcionar, enquanto os laços, usam a comando em Assembly "goto".
As aulas são boas, mas você poderia fala um pouco mais devagar, porque também da um eco na voz, e fica difícil entender pra quem não sabe.
Deixa eu ver se eu entendi: uma recursão é tipo um subprograma dividido em partes menores?
Não, é uma estratégia de dividir um problema em partes menores para resolvê-lo.
ah sim, obrigado!