SlideShare una empresa de Scribd logo
1 de 19
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.

Más contenido relacionado

La actualidad más candente

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 heapsortFlá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 heapsortFlávio Freitas
 
Análise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeAnálise de Algoritmos - Recursividade
Análise de Algoritmos - RecursividadeDelacyr Ferreira
 
Capítulo4 interpolação
Capítulo4 interpolaçãoCapítulo4 interpolação
Capítulo4 interpolaçãoJADSON SANTOS
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoessamuelthiago
 
Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05Programação Estruturada 2 - Aula 05
Programação Estruturada 2 - Aula 05thomasdacosta
 
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 completaEduardo 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áximaGabriel 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 shellsortFlávio Freitas
 
Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04Estrutura de Dados - Aula 04
Estrutura de Dados - Aula 04thomasdacosta
 
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 3Elaine 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-ccesa007Demetrio Ccesa Rayme
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersRodrigo Almeida
 
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ênciasDelacyr Ferreira
 
ShellSort - Ordenação
ShellSort - OrdenaçãoShellSort - Ordenação
ShellSort - OrdenaçãoAnderson Zardo
 

La actualidad más candente (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
 

Similar a Recursividade

Recursividade em linguagem C
Recursividade em linguagem CRecursividade em linguagem C
Recursividade em linguagem CLeonardo Lima
 
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.pdfGabrielEduardo16342
 
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 04thomasdacosta
 
Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06Programação Estruturada 2 - Aula 06
Programação Estruturada 2 - Aula 06thomasdacosta
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
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çaossuserc6132d
 
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 2011Luís Cobucci
 
(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - Subalgoritmos(A10) LabMM3 - JavaScript - Subalgoritmos
(A10) LabMM3 - JavaScript - SubalgoritmosCarlos Santos
 
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 PHPUnitDiego 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 CElaine Cecília Gatto
 

Similar 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

Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAHELENO FAVACHO
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...andreiavys
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...Francisco Márcio Bezerra Oliveira
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdfmarlene54545
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º anoRachel Facundo
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*Viviane Moreiras
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptssuser2b53fe
 
GÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptxGÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptxMARIADEFATIMASILVADE
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfHELENO FAVACHO
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfHELENO FAVACHO
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2Maria Teresa Thomaz
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptxJssicaCassiano2
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...HELENO FAVACHO
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfHELENO FAVACHO
 

Último (20)

Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIAPROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
PROJETO DE EXTENSÃO I - AGRONOMIA.pdf AGRONOMIAAGRONOMIA
 
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...E a chuva ...  (Livro pedagógico para ser usado na educação infantil e trabal...
E a chuva ... (Livro pedagógico para ser usado na educação infantil e trabal...
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
LISTA DE EXERCICIOS envolveto grandezas e medidas e notação cientifica 1 ANO ...
 
19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf19- Pedagogia (60 mapas mentais) - Amostra.pdf
19- Pedagogia (60 mapas mentais) - Amostra.pdf
 
Camadas da terra -Litosfera conteúdo 6º ano
Camadas da terra -Litosfera  conteúdo 6º anoCamadas da terra -Litosfera  conteúdo 6º ano
Camadas da terra -Litosfera conteúdo 6º ano
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
P P P 2024 - *CIEJA Santana / Tucuruvi*
P P P 2024  - *CIEJA Santana / Tucuruvi*P P P 2024  - *CIEJA Santana / Tucuruvi*
P P P 2024 - *CIEJA Santana / Tucuruvi*
 
aula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.pptaula de bioquímica bioquímica dos carboidratos.ppt
aula de bioquímica bioquímica dos carboidratos.ppt
 
GÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptxGÊNERO CARTAZ - o que é, para que serve.pptx
GÊNERO CARTAZ - o que é, para que serve.pptx
 
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdfPROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
PROJETO DE EXTENSÃO I - SERVIÇOS JURÍDICOS, CARTORÁRIOS E NOTARIAIS.pdf
 
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdfPROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
PROJETO DE EXTENSÃO I - TERAPIAS INTEGRATIVAS E COMPLEMENTARES.pdf
 
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2Estudar, para quê?  Ciência, para quê? Parte 1 e Parte 2
Estudar, para quê? Ciência, para quê? Parte 1 e Parte 2
 
6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx6ano variação linguística ensino fundamental.pptx
6ano variação linguística ensino fundamental.pptx
 
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
PROJETO DE EXTENSÃO I - TECNOLOGIA DA INFORMAÇÃO Relatório Final de Atividade...
 
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdfPROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
PROJETO DE EXTENSÃO - EDUCAÇÃO FÍSICA BACHARELADO.pdf
 

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 del editor

  1. Colocar fundo quadro negro
  2. Substituir pelo fibonacci