Para quem não entendeu ainda, é incrivelmente simples: vamos pegar o exemplo do vídeo: int fatorial(int x) { int resultado; if( x == 0) { resultado = 1; } else { resultado = x * fatorial (x - 1); } } O que vai acontecer: Vamos supor que em main eu chamei a função fatorial desta forma: fatorial(3); então ele entra na função fatorial() e faz literalmente assim: fatorial(x = 3) { int resultado; x é igual a 0 ? : Não. Então: (4) resultado = 3 * fatorial (3 - 1); // Como ele não resolveu ainda, ele chama denovo a função fatorial(), ainda em else: fatorial( x = 2 ) { int resultado; x é igual a 0 ?: Não. Então: (3) resultado = 2 * fatorial ( 2 - 1); // Como ele não resolveu ainda, ele chama denovo a função fatorial, ainda em else: fatorial( x = 1 ) { int resultado; x é igual a 0? : Não. Então: (2) resultado = 1 * fatorial( 1 - 1 ); //Como ele não resolveu ainda, ele chama denovo a função fatorial: fatorial( x = 0) { int resultado; x é igual a 0? : Sim. Então: (1) resultado = 1; return resultado; (retornou 1) } //Finalmente, ele finalizou e definiu resultado como 1... agora, e compilador // faz o caminho INVERSO, e calcula todas as variáveis anteriores, pois só // agora conseguiu um resultado (por isso o nome função RECURSIVA, pois // ela faz o CURSO CONTRÁRIO quando resolve um problema deste tipo): // Se ligou nos números entre parênteses nas variáveis "resultado" acima? // agora siga elas para você entender o que está sendo feito logo abaixo: (1) resultado = 1; // voltando com o valor 1 (2) resultado = 1 * (1) = 1; // voltando com o valor 1 (3) resultado = 2 * (1) = 2; // voltando com o valor 2 (4) resultado = 3 * (2) = 6; // finalmente resolvido } } } // Depois de tudo isso, ele finalmente chega ao fim desta função, e o return retorna // o resultado da variável "resultado" que, neste caso, é 6: return resultado (6); } E isso é função recursiva :D ( um forte abraço para o professor do vídeo, fez um excelente trabalho de didática, eu só consegui explicar porque ele conseguir me fazer entender... parabéns).
Eu vou te dizer: já lí muitos livros e ví muitas aulas na internet nos últimos anos... mais mano, em menos de 13 minutos você conseguiu fazer o que nenhum desses citados conseguiu !!! Eu finamente entendí como funciona a recursividade de funções pqp .... se vc conseguir a mesma proeza em ponteiros, você será um gênio da didatica :D.... estou esperançoso para as aulas de ponteiros...obrigado
Essa aula deu um nó na minha mente, mas com a ajuda de um comentário aqui no youtube eu pude entender perfeitamente como funciona uma função recursiva. Muito obrigado por compartilhar mais uma aula prof! Ótima didática como sempre.
Estou aprendendo sozinho c++, comprei uns livros e são muito úteis, mas, as vezes algumas coisas ficam vagas e essa foi uma delas estava empacado em um problema e tu ajudou muito, obrigado!
Exelente explicação, principalmente no momento do "Q da questão" Estava precisando entender recursividade para partir para ordenaçao megeSort. Parabéns!!
Você percebe que está aprendendo, quando percebe algo errado e fica procurando, ai logo depois no vídeo o professor se corrige e vê que ele tinha errado. HAHAHAHAHA
Cara, simplesmente a melhor esplicação de recursividade. Assisti a muitos, mas você matou a questão ao 6:31 "Como se houvesse uma pausa".....Pronto, agora entendi essa porra. :D
ótima sugestão cara.. realmente eu deveria ter feito isso desde o início mas na época nem pensei... estou só com preguiça de voltar em todos os vídeos e reescrever o código de todas as aulas :/ .. Nos vídeos de Java estou sempre fornecendo um link para download do código fonte ;) Valeu pela dica e assim que puder vou fazer isso
Muito bem explicado. As apostilas que eu estava lendo não mencionavam de forma tão clara o armazenamento da variável com mesmo nome e valores diferentes na memória
vc é muito foda, ia voltar pra dar like em todos os vídeos só depois q eu terminasse de ver todos mas tive q parar nesse aqui pra comentar. Excelente explicaçao.
O que ocorre é que quando você executa uma função que diferente de um Procedimento possui um retorno ela devolve um valor para trecho de código onde foi feita sua chama em uma função recursiva na qual uma função realiza uma chamada de outra função("ou a si mesma") a função executando dentro de outra função deve ser resolvida primeiro pelo compilador e retornar um valor para a função que efetuou seu chamado assim permitindo que ela finalize sua execução .No exemplo apresentado no vídeo podemos observar essa regra se aplicando a cada chamada até encontrar seu critério de parada , no caso 'x=0" e então retornar seu valor para a função anterior na qual recebeu seu chamado permitindo que ela finalize e repita o ciclo até que retorne a função principal ;
instancia... a palavra correta seria, que a função fatorial quando chama a si mesma, ela abre uma outra instancia da função fatorial... e assim sucessivamente vai abrindo outras instancias da função até obter o resultado e retornar o valor obtido
Para quem não entendeu ainda, é incrivelmente simples:
vamos pegar o exemplo do vídeo:
int fatorial(int x)
{
int resultado;
if( x == 0)
{
resultado = 1;
} else
{
resultado = x * fatorial (x - 1);
}
}
O que vai acontecer:
Vamos supor que em main eu chamei a função fatorial desta forma:
fatorial(3);
então ele entra na função fatorial() e faz literalmente assim:
fatorial(x = 3)
{
int resultado;
x é igual a 0 ? : Não.
Então:
(4) resultado = 3 * fatorial (3 - 1);
// Como ele não resolveu ainda, ele chama denovo a função fatorial(), ainda em else:
fatorial( x = 2 )
{
int resultado;
x é igual a 0 ?: Não.
Então:
(3) resultado = 2 * fatorial ( 2 - 1);
// Como ele não resolveu ainda, ele chama denovo a função fatorial, ainda em else:
fatorial( x = 1 )
{
int resultado;
x é igual a 0? : Não.
Então:
(2) resultado = 1 * fatorial( 1 - 1 );
//Como ele não resolveu ainda, ele chama denovo a função fatorial:
fatorial( x = 0)
{
int resultado;
x é igual a 0? : Sim.
Então:
(1) resultado = 1;
return resultado; (retornou 1)
}
//Finalmente, ele finalizou e definiu resultado como 1... agora, e compilador
// faz o caminho INVERSO, e calcula todas as variáveis anteriores, pois só
// agora conseguiu um resultado (por isso o nome função RECURSIVA, pois
// ela faz o CURSO CONTRÁRIO quando resolve um problema deste tipo):
// Se ligou nos números entre parênteses nas variáveis "resultado" acima?
// agora siga elas para você entender o que está sendo feito logo abaixo:
(1) resultado = 1; // voltando com o valor 1
(2) resultado = 1 * (1) = 1; // voltando com o valor 1
(3) resultado = 2 * (1) = 2; // voltando com o valor 2
(4) resultado = 3 * (2) = 6; // finalmente resolvido
}
}
}
// Depois de tudo isso, ele finalmente chega ao fim desta função, e o return retorna
// o resultado da variável "resultado" que, neste caso, é 6:
return resultado (6);
}
E isso é função recursiva :D ( um forte abraço para o professor do vídeo, fez um excelente trabalho de didática, eu só consegui explicar porque ele conseguir me fazer entender... parabéns).
e se no caso eu resolvesse colocar o valor 9, eu conseguiria o fatorial? eu teria que ir no meu algoritmo e muda-lo?
Vai resolver o fatorial de qualquer numero
obg, é que eu tinha me confundido na explicação dele
Ótima explicação.
fiquei meio confuso porque ele entrou dentro do comando "else" sendo que era zero e pensei que deveria apenas retornar 1.
Muito bom, conseguiu explicar em dez minutos, o que meu professor não conseguiu em 3 aulas! Obrigado.
True story ;)
Verdade.
ahaha também me aconteceu o mesmo xD
Cara a melhor aula explicando recursividade que já vi. Parabéns! 10 anos desse vídeo. Sucesso.
Eu vou te dizer: já lí muitos livros e ví muitas aulas na internet nos últimos anos... mais mano, em menos de 13 minutos você conseguiu fazer o que nenhum desses citados conseguiu !!! Eu finamente entendí como funciona a recursividade de funções pqp .... se vc conseguir a mesma proeza em ponteiros, você será um gênio da didatica :D.... estou esperançoso para as aulas de ponteiros...obrigado
UOUU foda!
Agora entendi!
O return sempre bugava minha cabeça, mas faz sentido deixar em tempo de espera!
FODA! Obrigado!
achei fenomenal esse jeito de explicar recursão
O vídeo é velho, mas ajuda que é uma beleza kkkkk
Explicou melhor do q muitas outras aulas
Obrigado mesmo, De Aluno Para Aluno
Como eu queria que o infeliz do meu professor de programação explicasse assim... Muito bom o vídeo, parabéns!
Que aula incrível!!!! Nem na faculdade é tão bem explicado como foi aqui. Muito obrigada!!
Sou professor de informática e digo que essa é uma das melhores explicações sobre recursividade que já vi. Parabéns pelo vídeo!
Eu tava surtando por estar tendo dificuldade em entender, mas você me salvou 🙏🙏🙏. Aula muito boa!
cara muito boa explicação, muito obrigada!
Salvou demais amigo, parabéns pela explicação, tava arregaçando minha cabeça tentando entender como era realizado o cálculo. Valeu demais.
Por que você não faz mais vídeos?!
Sua didática é excelente!
A pessoa que descobriu esse método (de fazer fatorial com a própria função) é incrível.
eu já pesquisei. Esse é o melhor vídeo sobre o assunto!
Muito bom, sanando dúvidas até mesmo depois de 8 anos da data de postagem!
Amigo! Parabéns! Melhor explicação da função de Recursividade que eu já vi!!! Muito bom mesmo!!!
Essa aula deu um nó na minha mente, mas com a ajuda de um comentário aqui no youtube eu pude entender perfeitamente como funciona uma função recursiva. Muito obrigado por compartilhar mais uma aula prof!
Ótima didática como sempre.
Eu tinha a idéia de recursividade bem superficial, agora consegui entender o que de fato acontece. Obrigado!
Primeira vez que vejo um video sobre recursividade e consegui compreender perfeitamente, meus parabéns pela didática.
Inacreditável como você fez parecer tão simples!!!!
Que aula incrível!!!!!! 👏🏼👏🏼👏🏼👏🏼👏🏼
ótima hora que fui ver vídeo aulas sobre prog1, você quebrou meu bloqueio, antes odiava essa matéria e agora é uma das minhas preferidas
Professor com a melhor didática que eu já vi na minha vida, seus videos me salvam!!!
Muito ótima sua explicação! Parabéns e obrigada por compartilhar!
Assistindo novamente em 2021! Excelente Aula!
Vc tem o dom de ensinar, parabéns, pq agora estou entendendo! Obrigada!
Estou aprendendo sozinho c++, comprei uns livros e são muito úteis, mas, as vezes algumas coisas ficam vagas e essa foi uma delas estava empacado em um problema e tu ajudou muito, obrigado!
Ótimo, muito bem esclarecido. Em 2020, a melhor explicação que encontrei foi essa.
Obrigado pelo comentário... eu terminando a série de vídeos que já tenho aqui planejado vou tentar fazer uma série focado em testes booleanos. ;D
vlws
Exelente explicação, principalmente no momento do "Q da questão"
Estava precisando entender recursividade para partir para ordenaçao megeSort.
Parabéns!!
Melhor explicação sobre recursividade que já vi. Obrigado.
Nunca tinha pensado em fazer a fatorial desta forma, parabéns pelo algoritimo, programação sempre nos surpreendendo
Mesmo programando em java as suas aulas de C ainda me ensinam, kkkk. Você é demais!
Parabéns pela explicação. Muito obrigado!!!
Cara, suas aulas são sensacionais! Parabéns, ótimo trabalho!!!
pqp cara que coisa loka... nunca achei que ia entender isso.. obrigado muito obrigado
Incrível parabéns 👏👏, explicação muito boa parabéns!!
Brigadão!!! Tava com dúvida sobre como funciona uma função recursiva, mas agora tá tudo mais claro. :)
vídeo atemporal, explicação perfeita
As suas aulas são as melhores!!!
Você percebe que está aprendendo, quando percebe algo errado e fica procurando, ai logo depois no vídeo o professor se corrige e vê que ele tinha errado. HAHAHAHAHA
Muito a frente do seu tempo
Em 2012 já fazia vídeo de 100 camadas de função
Excelente ! Vai ajudar e muito como complemento das aulas da Facul (ou a "aulas" da facul serão um complemento), bem explicado!!! Obrigado !
Melhor explicação de todas!!!!!
Esse vídeo me ajudou demais!! Obrigado!!👏👏👏
Cara, simplesmente a melhor esplicação de recursividade. Assisti a muitos, mas você matou a questão ao 6:31 "Como se houvesse uma pausa".....Pronto, agora entendi essa porra. :D
Caramba , conseguiu explicar com maestria!!!!! Ótima vídeo aula!!
Cara, melhor explicação de recursividade que eu já vi, parabéns!
Muito legal, sua explicação analítica da função recursiva.
ótima sugestão cara.. realmente eu deveria ter feito isso desde o início mas na época nem pensei... estou só com preguiça de voltar em todos os vídeos e reescrever o código de todas as aulas :/ ..
Nos vídeos de Java estou sempre fornecendo um link para download do código fonte ;)
Valeu pela dica e assim que puder vou fazer isso
Só consegui entender com esse video, recebeu um like! parabens!
Muito bem explicado. As apostilas que eu estava lendo não mencionavam de forma tão clara o armazenamento da variável com mesmo nome e valores diferentes na memória
Cara parabéns ajudou muito, vou sempre curtir as suas vídeo aula, são muito bacana, muito obrigado mesmo..
aula boa é atemporal, mandando um olá de 2021 hehe SIMPLISMENTE INCRÍVEL!
Caramba!!!! Esse cara explica muito bem.
Excelentes aulas, estou acompanhando para complementar o estudo da Faculdade. Parabens!
parabéns pela aula muito boa sua explicação
Cara, explicou muito bemmmm! Obrigado!
Sério cara , tuas aulas são muito boas !!! Aprendo bastante com vc !
Nossaaa Inception total. Ótima explicação!
Excelente explicação! Tive de usar papel e caneta, mas entendi. Muito obrigado pelas aulas!
muito show me ajudou a entender melhor esta função.
vc é muito foda, ia voltar pra dar like em todos os vídeos só depois q eu terminasse de ver todos mas tive q parar nesse aqui pra comentar. Excelente explicaçao.
Ajudou muito. Obrigado!
moço vc é uma lenda!!!
cara esse canal é sensacional, parabéns pela didática!!!
Impressionante esse exemplo. Parabéns Italo. Você é demais =D
Muito boa a explicação.
Caralho maluco, Parabéns!
Até que enfim entendi recursão! kKKKKKK
Sem palavras 👏
fez jus ao nome do canal, obrigado pela explicação detalhada...
Muito Bom... Parabéns.
muito obrigado Lucas!
EXELENTE aula.
Excelente explicação. Parabens.
cara ajudou bagarai tava com uma duvida cruel quanto a sintaxe e talz valeu mesmo
Fiquei a entender. Obrigado!
Parabéns ótima explicação.
Vlw Filipe
Fantástico! Ajudou muito!
Perfeita explicação! Ficou bem fácil de entender, muito obrigado!!!
Muito Obrigado !
Muito bem explicado!
Melhor aula
Muito boa a sua explicação. Facilitou demais, valeu :)
EXPLICAÇÃO MT BOA 👌🤌👍
Explica melhor que meu Professor! :D Vlw cara!
Sensacional essa aula
Cara vai dar aula na Uninter pq o professor lá nem ele mesmo se entende. Valeu pela explicação! +De aluno para aluno
Valeu Cara boa explicação !!!
perfeita explicação
Principio da indução finita é base pra entender como funciona a recursão
Muito Bom!
Valeu me ajudou muito
Bastante didático, obrigado!
Boa explicação!
O que ocorre é que quando você executa uma função que diferente de um Procedimento possui um retorno ela devolve um valor para trecho de código onde foi feita sua chama
em uma função recursiva na qual uma função realiza uma chamada de outra função("ou a si mesma") a função executando dentro de outra função deve ser resolvida primeiro pelo compilador e retornar um valor para a função que efetuou seu chamado assim permitindo que ela finalize sua execução .No exemplo apresentado no vídeo podemos observar essa regra se aplicando a cada chamada até encontrar seu critério de parada , no caso 'x=0" e então retornar seu valor para a função anterior na qual recebeu seu chamado permitindo que ela finalize e repita o ciclo até que retorne a função principal ;
instancia... a palavra correta seria, que a função fatorial quando chama a si mesma, ela abre uma outra instancia da função fatorial... e assim sucessivamente vai abrindo outras instancias da função até obter o resultado e retornar o valor obtido
porra valeu!!!
muito show!!!