SlideShare uma empresa Scribd logo
Recursividade
Raphael Leite Campos
IFRS
Nossa Aula de Hoje!
Conteúdo
• Lembram de Funções? Que tal revisarmos um
pouco?
• Objetivos
• Definição Recursividade
• Como aplicar a Recursão a um problema?
• O que compõe uma solução recursiva?
• Vamos praticar um pouco!!!
• Vamos comparar a abordagem Recursiva Vs
Iterativa? Será que há vantagem de alguma?
• Desafio pra Casa (Torre de Hanói)!!!
Revisão de Funções
• Funções ou subprogramas – Blocos de
instruções que realizam tarefas específicas e
repetitivas;
• Objetivo: Subdividir os programas permite
uma codificação menor e mais organizada.
– diminuindo os efeitos colaterais de erros;
– facilita a manutenção do código;
– facilita o teste de código.
Revisão de Funções
• Como definir uma função?
– tipo_retorno nome_funcao(tipo parametro, tipo param){ Corpo função };
Objetivos da Aula de Hoje
Aprender o que é recursão, a aplicar a
abordagem recursiva para a solução de
problemas. Desenvolver uma solução recursiva
saber diferenciá-la de uma abordagem iterativa.
Definição de Recursividade
Fonte: http://pensamentocomputacional.blogspot.com.br/
Definição de Recursividade
Uma solução computacional é recursiva
quando é utilizada uma função que chama a si
mesma, dentro de si, repetidas vezes, para
compor a solução de um problema.
Aplicações de Recursividade
• Algoritmos de Busca e Ordenação: Quick Sort,
Merge Sort, Pesquisa Binária
• Inteligência Artificial
Aplicação da Recursão
• Como aplicar a Recursão a um problema?
• Fatorial
– 5! = 5*4*3*2*1 = 120
– n! = n*(n-1)*(n-2)*...*1
– 0! e 1! = 1
!!!Vamos ao Código!!!
Aplicação da Recursão
#include <stdio.h>
unsigned long fatorial( unsigned long num )
{
if ( num <= 1 ) // teste para o caso base
return 1;
// casos base: 0! = 1 and 1! = 1
else
// passo da recursão
return num * fatorial( num - 1 );
} // fim da função fatorial
Solução Recursiva
• Caso Base Fatorial
– if ( numero <= 1 ) return 1;
• Passo da Recursão/Operação repetida
– n*(n - 1)*(n – 2)...
• Retro Propagação dos resultados
– return numero * factorial( numero - 1 );
Vamos a prática!
#include <stdio.h>
int misterio( int, int ); // Protótipo da
função
int main() {
int x, y;
printf(“Informe dois númeroos");
scanf("%d %d", &x, &y);
printf(“O resultado é %i “, misterio( x, y ))
} // end main
// Parâmetro b deve ser positivo para não
haver recursão infinita
int misterio( int a, int b )
{
if ( b == 1 )
return a;
else
return a + misterio( a, b - 1 );
} // fim da função misterio
O que o programa faz?Qual o caso base?
Qual a passo da recursão?
Serie Fibonacci
• Serie encontrada na natureza, descreve a
forma do espiral
• É considerada uma medida de ouro e aplicada
na arquitetura, na proporção entre
comprimento e largura, bem como em cartões
postais. Entre outras aplicações
• Serie é composta pelos seguintes termos:
– {0, 1, 1, 2, 3, 5, 8, 13, ...}
Recursão
int fibonacci(int n);
int main(){
int L, i;
//Solicitar ao usuário o número de termos
printf("Digite o número de termos");
scanf("%d",&L);
for (i=0; i < L; i++){
printf("%i t", fibonacci(i));
}
}
int fibonacci(int n){
if (n == 0 || n ==1)
return n;
return fibonacci(n-1) + fibonacci(n-2);
}
Iteração
int main(){
int a1=0,a2=1,a3,L;
//Solicitar ao usuário o número de termos
printf("Digite o número de termos");
scanf("%d",&L);
if(L == 1)
printf(" %d ",a1);
else if (L > 1)
printf("%d %d ",a1,a2);
while( L > 2 ){
L--;
a3 = a1 + a2;
a1 = a2;
a2 = a3;
printf(" %d ",a3);
} } }
Abordagem Recursiva x Iterativa
Abordagem Recursiva x Iterativa
Recursão
– Estrutura de Seleção;
– Usa repetição atraves de
chamdas de Função;
– Teste de término: caso base
encontrado;
– Produz versão mais simples
do problema a cada chamada;
– pode ocorrer infinitamente;
Iteração
• Estrutura de Repetição;
• Usa repetição atraves de
estrutura de controle do laço;
• Fim do loop;
• Modifica o contador do loop;
• Pode ocorrer infinitamente;
• É mais utilizada, na maioria das
vezes mais concisa e mais rápida;
Revisão
• Do que é composta uma solução recursiva?
unsigned long fatorial( unsigned long );
int main()
{
// Calculo do Fatorial de 0 até 10
for ( int cont = 0; cont <= 10; ++cont )
printf("%i! =t %i n", cont, fatorial(cont));
} // end main
unsigned long fatorial( unsigned long num )
{
if ( num <= 1 ) // teste para o caso base
return 1;
else
return num * fatorial( num - 1 );
} // fim da função fatorial
Qual o passo da recursão?
Qual o caso base?
Torre de Hanoi
• A descrição do trabalho em grupo está
disponibilizado no ambiente de aprendizagem.
• A avaliação será composta com as demais
avaliações.
• Será avaliada a correção da solução
Próxima Aula
• Registros (Estruturas em C)
– Coleções de Variáveis referenciadas por um nome
– Definição;
– Implementação e Uso;
– Utilizando com Matrizes;
Bibliografia
• GRIFFITHS, DAVID; GRIFFITHS, DAWN; Use a
cabeça! C. Editora Alta Books, 2012. ISBN:
978-85-7608-794-6.
• FEOFILOFF, PAULO. Algoritmos em Linguagem
C. Editora Campus/Elsevier. 2008-2009. ISBN:
978-85-352-3249-3.
• Deitel, Harvey; Paul Deitel; C - Como
Programar. 6ª Edição. Editora Pearson,2011.

Mais conteúdo relacionado

Mais procurados

Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsort
Flávio Freitas
 
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Flávio Freitas
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
Delacyr Ferreira
 
Capítulo4 interpolação
Capítulo4 interpolaçãoCapítulo4 interpolação
Capítulo4 interpolação
JADSON SANTOS
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
samuelthiago
 
Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05
thomasdacosta
 
Max min ime
Max min   imeMax min   ime
Max min ime
Diogo Edler Menezes
 
Ed1
Ed1Ed1
16598764 apostila-de-calculo
16598764 apostila-de-calculo16598764 apostila-de-calculo
16598764 apostila-de-calculo
JanainaFernandesLace
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
Eduardo Bregaida
 
Programação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma MáximaProgramação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma Máxima
Gabriel Albuquerque
 
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Flávio Freitas
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04
thomasdacosta
 
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3
Elaine Cecília Gatto
 
Teoría y Problemas de Calculo Integral souza-ccesa007
Teoría y Problemas de Calculo Integral souza-ccesa007Teoría y Problemas de Calculo Integral souza-ccesa007
Teoría y Problemas de Calculo Integral souza-ccesa007
Demetrio Ccesa Rayme
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffers
Rodrigo Almeida
 
Cálculo numérico
Cálculo numéricoCálculo numérico
Cálculo numérico
Herlan Ribeiro de Souza
 
Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
Elaine Cecília Gatto
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de Recorrências
Delacyr Ferreira
 
ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - Ordenação
Anderson Zardo
 

Mais procurados (20)

Tutorial aed iii 009 - algoritmo de ordenação heapsort
Tutorial aed iii   009 - algoritmo de ordenação heapsortTutorial aed iii   009 - algoritmo de ordenação heapsort
Tutorial aed iii 009 - algoritmo de ordenação heapsort
 
Tutorial aed iii 008 - algoritmo de ordenação heapsort
Tutorial aed iii   008 - algoritmo de ordenação heapsortTutorial aed iii   008 - algoritmo de ordenação heapsort
Tutorial aed iii 008 - algoritmo de ordenação heapsort
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - Recursividade
 
Capítulo4 interpolação
Capítulo4 interpolaçãoCapítulo4 interpolação
Capítulo4 interpolação
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
 
Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05
 
Max min ime
Max min   imeMax min   ime
Max min ime
 
Ed1
Ed1Ed1
Ed1
 
16598764 apostila-de-calculo
16598764 apostila-de-calculo16598764 apostila-de-calculo
16598764 apostila-de-calculo
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
Programação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma MáximaProgramação Dinâmica - Segmento de Soma Máxima
Programação Dinâmica - Segmento de Soma Máxima
 
Tutorial aed iii 001 - algoritmo de ordenação shellsort
Tutorial aed iii   001 - algoritmo de ordenação shellsortTutorial aed iii   001 - algoritmo de ordenação shellsort
Tutorial aed iii 001 - algoritmo de ordenação shellsort
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04
 
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3
 
Teoría y Problemas de Calculo Integral souza-ccesa007
Teoría y Problemas de Calculo Integral souza-ccesa007Teoría y Problemas de Calculo Integral souza-ccesa007
Teoría y Problemas de Calculo Integral souza-ccesa007
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffers
 
Cálculo numérico
Cálculo numéricoCálculo numérico
Cálculo numérico
 
Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Análise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de RecorrênciasAnálise de Algoritmos - Solução de Recorrências
Análise de Algoritmos - Solução de Recorrências
 
ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - Ordenação
 

Semelhante a Recursividade

Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem C
Leonardo Lima
 
Algoritmo recursivo
Algoritmo recursivoAlgoritmo recursivo
Algoritmo recursivo
Carlos Rodrigo de Araujo
 
01-Paradigmas.pdf
01-Paradigmas.pdf01-Paradigmas.pdf
01-Paradigmas.pdf
AmlieOGalaxias
 
aula intro de Python sobre Funcoes.pdf
aula intro de  Python sobre  Funcoes.pdfaula intro de  Python sobre  Funcoes.pdf
aula intro de Python sobre Funcoes.pdf
GabrielEduardo16342
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
thomasdacosta
 
AP5_2013_2.pptx
AP5_2013_2.pptxAP5_2013_2.pptx
AP5_2013_2.pptx
MarcoAntnio469345
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06
thomasdacosta
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
diogoa21
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
ssuserc6132d
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
Sérgio Souza Costa
 
Recursão
RecursãoRecursão
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Luís Cobucci
 
Visualg
VisualgVisualg
Visualg
Pedro Silva
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
Michael Castillo Granados
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
Henry Raúl González Brito
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
Carlos Santos
 
Pged 07
Pged 07Pged 07
Pged 07
samuelthiago
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
Diego Tremper
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
Elaine Cecília Gatto
 
Funcao PHP
Funcao PHPFuncao PHP

Semelhante a Recursividade (20)

Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem C
 
Algoritmo recursivo
Algoritmo recursivoAlgoritmo recursivo
Algoritmo recursivo
 
01-Paradigmas.pdf
01-Paradigmas.pdf01-Paradigmas.pdf
01-Paradigmas.pdf
 
aula intro de Python sobre Funcoes.pdf
aula intro de  Python sobre  Funcoes.pdfaula intro de  Python sobre  Funcoes.pdf
aula intro de Python sobre Funcoes.pdf
 
Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04Algoritmos e Estrutura de Dados - Aula 04
Algoritmos e Estrutura de Dados - Aula 04
 
AP5_2013_2.pptx
AP5_2013_2.pptxAP5_2013_2.pptx
AP5_2013_2.pptx
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Conceito de funçao e modularizaçao
Conceito de funçao e modularizaçaoConceito de funçao e modularizaçao
Conceito de funçao e modularizaçao
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 
Recursão
RecursãoRecursão
Recursão
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
Visualg
VisualgVisualg
Visualg
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos
 
Pged 07
Pged 07Pged 07
Pged 07
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
Comandos de Controle de Programa em C
Comandos de Controle de Programa em CComandos de Controle de Programa em C
Comandos de Controle de Programa em C
 
Funcao PHP
Funcao PHPFuncao PHP
Funcao PHP
 

Último

Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
Centro Jacques Delors
 
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
AntnioManuelAgdoma
 
Especialidade - Animais Ameaçados de Extinção(1).pdf
Especialidade - Animais Ameaçados de Extinção(1).pdfEspecialidade - Animais Ameaçados de Extinção(1).pdf
Especialidade - Animais Ameaçados de Extinção(1).pdf
DanielCastro80471
 
Leonardo da Vinci .pptx
Leonardo da Vinci                  .pptxLeonardo da Vinci                  .pptx
Leonardo da Vinci .pptx
TomasSousa7
 
Vogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantilVogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantil
mamaeieby
 
livro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdflivro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdf
cmeioctaciliabetesch
 
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoAtividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
MateusTavares54
 
A dinâmica da população mundial de acordo com as teorias populacionais.pptx
A dinâmica da população mundial de acordo com as teorias populacionais.pptxA dinâmica da população mundial de acordo com as teorias populacionais.pptx
A dinâmica da população mundial de acordo com as teorias populacionais.pptx
ReinaldoSouza57
 
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
MessiasMarianoG
 
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfCaderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
enpfilosofiaufu
 
“A classe operária vai ao paraíso os modos de produzir e trabalhar ao longo ...
“A classe operária vai ao paraíso  os modos de produzir e trabalhar ao longo ...“A classe operária vai ao paraíso  os modos de produzir e trabalhar ao longo ...
“A classe operária vai ao paraíso os modos de produzir e trabalhar ao longo ...
AdrianoMontagna1
 
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
LucianaCristina58
 
Famílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do AssaréFamílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do Assaré
profesfrancleite
 
O que é um Ménage a Trois Contemporâneo .pdf
O que é um Ménage a Trois Contemporâneo .pdfO que é um Ménage a Trois Contemporâneo .pdf
O que é um Ménage a Trois Contemporâneo .pdf
Pastor Robson Colaço
 
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxSlides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
LuizHenriquedeAlmeid6
 
PowerPoint Newton gostava de Ler - Saber em Gel.pdf
PowerPoint Newton gostava de Ler - Saber em Gel.pdfPowerPoint Newton gostava de Ler - Saber em Gel.pdf
PowerPoint Newton gostava de Ler - Saber em Gel.pdf
1000a
 
Rimas, Luís Vaz de Camões. pptx
Rimas, Luís Vaz de Camões.          pptxRimas, Luís Vaz de Camões.          pptx
Rimas, Luís Vaz de Camões. pptx
TomasSousa7
 
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdfCADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
NatySousa3
 
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de CarvalhoO sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
analuisasesso
 
0002_matematica_6ano livro de matemática
0002_matematica_6ano livro de matemática0002_matematica_6ano livro de matemática
0002_matematica_6ano livro de matemática
Giovana Gomes da Silva
 

Último (20)

Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
Folheto | Centro de Informação Europeia Jacques Delors (junho/2024)
 
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
347018542-PAULINA-CHIZIANE-Balada-de-Amor-ao-Vento-pdf.pdf
 
Especialidade - Animais Ameaçados de Extinção(1).pdf
Especialidade - Animais Ameaçados de Extinção(1).pdfEspecialidade - Animais Ameaçados de Extinção(1).pdf
Especialidade - Animais Ameaçados de Extinção(1).pdf
 
Leonardo da Vinci .pptx
Leonardo da Vinci                  .pptxLeonardo da Vinci                  .pptx
Leonardo da Vinci .pptx
 
Vogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantilVogais Ilustrados para alfabetização infantil
Vogais Ilustrados para alfabetização infantil
 
livro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdflivro ciclo da agua educação infantil.pdf
livro ciclo da agua educação infantil.pdf
 
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - AlfabetinhoAtividades de Inglês e Espanhol para Imprimir - Alfabetinho
Atividades de Inglês e Espanhol para Imprimir - Alfabetinho
 
A dinâmica da população mundial de acordo com as teorias populacionais.pptx
A dinâmica da população mundial de acordo com as teorias populacionais.pptxA dinâmica da população mundial de acordo com as teorias populacionais.pptx
A dinâmica da população mundial de acordo com as teorias populacionais.pptx
 
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
759-fortaleza-resultado-definitivo-prova-objetiva-2024-05-28.pdf
 
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdfCaderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
Caderno de Resumos XVIII ENPFil UFU, IX EPGFil UFU E VII EPFEM.pdf
 
“A classe operária vai ao paraíso os modos de produzir e trabalhar ao longo ...
“A classe operária vai ao paraíso  os modos de produzir e trabalhar ao longo ...“A classe operária vai ao paraíso  os modos de produzir e trabalhar ao longo ...
“A classe operária vai ao paraíso os modos de produzir e trabalhar ao longo ...
 
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx- TEMPLATE DA PRATICA - Psicomotricidade.pptx
- TEMPLATE DA PRATICA - Psicomotricidade.pptx
 
Famílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do AssaréFamílias Que Contribuíram Para O Crescimento Do Assaré
Famílias Que Contribuíram Para O Crescimento Do Assaré
 
O que é um Ménage a Trois Contemporâneo .pdf
O que é um Ménage a Trois Contemporâneo .pdfO que é um Ménage a Trois Contemporâneo .pdf
O que é um Ménage a Trois Contemporâneo .pdf
 
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxSlides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptx
 
PowerPoint Newton gostava de Ler - Saber em Gel.pdf
PowerPoint Newton gostava de Ler - Saber em Gel.pdfPowerPoint Newton gostava de Ler - Saber em Gel.pdf
PowerPoint Newton gostava de Ler - Saber em Gel.pdf
 
Rimas, Luís Vaz de Camões. pptx
Rimas, Luís Vaz de Camões.          pptxRimas, Luís Vaz de Camões.          pptx
Rimas, Luís Vaz de Camões. pptx
 
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdfCADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
CADERNO DE CONCEITOS E ORIENTAÇÕES DO CENSO ESCOLAR 2024.pdf
 
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de CarvalhoO sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
O sentimento nacional brasiliero, segundo o historiador Jose Murlo de Carvalho
 
0002_matematica_6ano livro de matemática
0002_matematica_6ano livro de matemática0002_matematica_6ano livro de matemática
0002_matematica_6ano livro de matemática
 

Recursividade

  • 2. Nossa Aula de Hoje! Conteúdo • Lembram de Funções? Que tal revisarmos um pouco? • Objetivos • Definição Recursividade • Como aplicar a Recursão a um problema? • O que compõe uma solução recursiva? • Vamos praticar um pouco!!! • Vamos comparar a abordagem Recursiva Vs Iterativa? Será que há vantagem de alguma? • Desafio pra Casa (Torre de Hanói)!!!
  • 3. Revisão de Funções • Funções ou subprogramas – Blocos de instruções que realizam tarefas específicas e repetitivas; • Objetivo: Subdividir os programas permite uma codificação menor e mais organizada. – diminuindo os efeitos colaterais de erros; – facilita a manutenção do código; – facilita o teste de código.
  • 4. Revisão de Funções • Como definir uma função? – tipo_retorno nome_funcao(tipo parametro, tipo param){ Corpo função };
  • 5. Objetivos da Aula de Hoje Aprender o que é recursão, a aplicar a abordagem recursiva para a solução de problemas. Desenvolver uma solução recursiva saber diferenciá-la de uma abordagem iterativa.
  • 6. Definição de Recursividade Fonte: http://pensamentocomputacional.blogspot.com.br/
  • 7. Definição de Recursividade Uma solução computacional é recursiva quando é utilizada uma função que chama a si mesma, dentro de si, repetidas vezes, para compor a solução de um problema.
  • 8. Aplicações de Recursividade • Algoritmos de Busca e Ordenação: Quick Sort, Merge Sort, Pesquisa Binária • Inteligência Artificial
  • 9. Aplicação da Recursão • Como aplicar a Recursão a um problema? • Fatorial – 5! = 5*4*3*2*1 = 120 – n! = n*(n-1)*(n-2)*...*1 – 0! e 1! = 1 !!!Vamos ao Código!!!
  • 10. Aplicação da Recursão #include <stdio.h> unsigned long fatorial( unsigned long num ) { if ( num <= 1 ) // teste para o caso base return 1; // casos base: 0! = 1 and 1! = 1 else // passo da recursão return num * fatorial( num - 1 ); } // fim da função fatorial
  • 11. Solução Recursiva • Caso Base Fatorial – if ( numero <= 1 ) return 1; • Passo da Recursão/Operação repetida – n*(n - 1)*(n – 2)... • Retro Propagação dos resultados – return numero * factorial( numero - 1 );
  • 12. Vamos a prática! #include <stdio.h> int misterio( int, int ); // Protótipo da função int main() { int x, y; printf(“Informe dois númeroos"); scanf("%d %d", &x, &y); printf(“O resultado é %i “, misterio( x, y )) } // end main // Parâmetro b deve ser positivo para não haver recursão infinita int misterio( int a, int b ) { if ( b == 1 ) return a; else return a + misterio( a, b - 1 ); } // fim da função misterio O que o programa faz?Qual o caso base? Qual a passo da recursão?
  • 13. Serie Fibonacci • Serie encontrada na natureza, descreve a forma do espiral • É considerada uma medida de ouro e aplicada na arquitetura, na proporção entre comprimento e largura, bem como em cartões postais. Entre outras aplicações • Serie é composta pelos seguintes termos: – {0, 1, 1, 2, 3, 5, 8, 13, ...}
  • 14. Recursão int fibonacci(int n); int main(){ int L, i; //Solicitar ao usuário o número de termos printf("Digite o número de termos"); scanf("%d",&L); for (i=0; i < L; i++){ printf("%i t", fibonacci(i)); } } int fibonacci(int n){ if (n == 0 || n ==1) return n; return fibonacci(n-1) + fibonacci(n-2); } Iteração int main(){ int a1=0,a2=1,a3,L; //Solicitar ao usuário o número de termos printf("Digite o número de termos"); scanf("%d",&L); if(L == 1) printf(" %d ",a1); else if (L > 1) printf("%d %d ",a1,a2); while( L > 2 ){ L--; a3 = a1 + a2; a1 = a2; a2 = a3; printf(" %d ",a3); } } } Abordagem Recursiva x Iterativa
  • 15. Abordagem Recursiva x Iterativa Recursão – Estrutura de Seleção; – Usa repetição atraves de chamdas de Função; – Teste de término: caso base encontrado; – Produz versão mais simples do problema a cada chamada; – pode ocorrer infinitamente; Iteração • Estrutura de Repetição; • Usa repetição atraves de estrutura de controle do laço; • Fim do loop; • Modifica o contador do loop; • Pode ocorrer infinitamente; • É mais utilizada, na maioria das vezes mais concisa e mais rápida;
  • 16. Revisão • Do que é composta uma solução recursiva? unsigned long fatorial( unsigned long ); int main() { // Calculo do Fatorial de 0 até 10 for ( int cont = 0; cont <= 10; ++cont ) printf("%i! =t %i n", cont, fatorial(cont)); } // end main unsigned long fatorial( unsigned long num ) { if ( num <= 1 ) // teste para o caso base return 1; else return num * fatorial( num - 1 ); } // fim da função fatorial Qual o passo da recursão? Qual o caso base?
  • 17. Torre de Hanoi • A descrição do trabalho em grupo está disponibilizado no ambiente de aprendizagem. • A avaliação será composta com as demais avaliações. • Será avaliada a correção da solução
  • 18. Próxima Aula • Registros (Estruturas em C) – Coleções de Variáveis referenciadas por um nome – Definição; – Implementação e Uso; – Utilizando com Matrizes;
  • 19. Bibliografia • GRIFFITHS, DAVID; GRIFFITHS, DAWN; Use a cabeça! C. Editora Alta Books, 2012. ISBN: 978-85-7608-794-6. • FEOFILOFF, PAULO. Algoritmos em Linguagem C. Editora Campus/Elsevier. 2008-2009. ISBN: 978-85-352-3249-3. • Deitel, Harvey; Paul Deitel; C - Como Programar. 6ª Edição. Editora Pearson,2011.

Notas do Editor

  1. Colocar fundo quadro negro
  2. Substituir pelo fibonacci