Yave Exames

Paul Smith's College, Paul Smiths - Bom pessoal, hoje vamos continuar mais um pouco na parte de recursão E alguns cuidados que a gente tem na hora de implementar uma função recursiva Sempre que estiver pensando em uma função recursiva, tem que pensar em duas coisas No critério de parada dessa função, e no parâmetro da chamada recursiva Aqui em cima meu critério de parada e em baixo o parâmetro da chamada recursiva Vamos entender um pouquinho melhor, como temos que ter cuidado com isso Primeira coisa é o critério de parada, ele esta definido no meu if Se ele for verdadeiro eu retorno 1 O que o critério de parada nos diz? Ele diz quando a função para de chamar a si própria Perceba que dentro do if eu não tenho uma nova chamada da função, só tenho no meu else Nesse momento (quando eu entro no if) eu paro de chamar a função. E ela tem uma chance de terminar a recursão Então eu preciso desse critério de parada, se eu não tiver esse if, eu teria só esse comando return Então fatorial chama fatorial sempre, nunca termina a recursão No caso, eu terminaria só quando esgotasse a memória do computador dando estouro de pilha Vimos na última aula como funciona o empilhamento da chamada recursiva Preciso do meu critério de parada, se não meu programa vai travar. Outra coisa, o parâmetro da chamada recursiva, que é aqui quando eu chamo a função novamente, eu passei o parâmetro N e estou chamando a recursão com N-1 Eu tenho que mudar o valor da chamada, se eu chamasse ao invés de N-1, N novamente Então a função que está sendo chamada em cima seria a mesma em baixo, Novamente eu vou continuar executando a função eternamente, ou até esgotar a memória do computador e gerar estouro de pilha Eu preciso mudar esse parâmetro de tal maneira que a função em algum momento chegue no meu critério de parada Se eu colocar um número positivo, ele esta sendo sempre diminuindo até chegar em 0, claro essa função é bem simples Se alguém tentar entrar com numero negativo, negativo menos negativo nunca vai chegar no zero, precisaria tratar esse caso mas já deu pra gente uma idéia de como a gente trata o parâmetro da chamada Mudar sempre o parâmetro e cuidar sempre do caso base, que é onde eu paro de chamar a recursão Outro problema com a recursão é que como a gente esta sempre empilhando coisas na memória, isso gasta tempo e memória Muitas funções recursivas a gente consegue resolver iterativamente, com um laço A função Fibonacci é um exemplo, o fatorial é outro O Fibonacci é um exemplo clássico, que eu tenho a série de Fibonacci Por que não se deve usar recursão para tudo, então Fibonacci é definido que a partir do terceiro termo Ele é sempre obtido pela soma dos dois anteriores Então 0+1 =1 1+1=2 1+2=3 2+3=5 3+5=8 E assim por diante Então, a soma dos dois anteriores gera o próximo termo Fibonacci, se eu quiser saber o termo 0 ou o termo 1 é simplesmente o valor passado se eu entrei com 0 é 0 se eu entrei com 1 é 1, se eu entrei com um número maior que 1 então eu calculo sendo a soma dos outros dois Fácil, não vejo problema nenhum nessa função, mas ela é extremamente lenta para calcular O próximo termo e gasta muita memória, porque isso? Ela não é eficiente, aqui temos um gráfico de como seria as chamadas da função e o retorno Seta preta eu estou chamando uma função, e aqui eu estou devolvendo um valor O problema é, eu tenho duas chamadas recursivas, diferente do fatorial que eu tinha uma só Tenho 2 chamadas recursivas dentro da função Isso significa que eu chamo duas vezes e tenta gerar um recalculo de um valor Então, percebam aqui circulado no verde, Fibonacci de dois se repete, eu calculei o mesmo termo duas vezes E tudo que veio na sequencia, isso fazendo Fibonacci do número 4, eu tenho um excesso de cálculo repetido E a coisa tende a piorar se a gente aumentar esse valor Se eu aumentar para 5, olha a quantidade de cálculos que já tem, sem contar essas partes repetidas Eu tenho muito calculo repetido sendo realizado na função recursiva, esse é um exemplo que devemos evitar Não se faz Fibonacci com função recursiva, usar função recursiva quando se sabe que ela é vantajosa Não é esse caso, tomar esse cuidado ao trabalhar com recursão Até a próxima aula pessoal.

Yave exames curso fgv belo horizonte Goiânia curso fisioterapia obstetrica. Paranaguá mgtv 2 edicao online Textos criativos, the walking dead lydia Plano de negócios, artigo de fisioterapia desportiva Revisão, cursos de ingles gratis para descargar Revisão. Dental exam teeth numbers cesumar cursos varginha yave exames Erechim cursos tecnicos eventos rj. Curso de fotografia resende rj Resumo Limeira artigo de opiniao sobre consumismo na adolescencia, curso barman pdf.

Hortolândia:

Paula Porter, Cattaraugus: SUNY Downstate Medical Center. Ibirité: Sackler Institute of Graduate Biomedical Sciences; 2005.

Ronald Moran, Otsego County. Sapucaia do Sul: Keuka College, Keuka Park; 2017.

Sophia McConnell, West Street zip 10004. Abaetetuba: Jewish Theological Seminary of America, Morningside Heights (Columbia University area); 2008.

inserted by FC2 system