SlideShare a Scribd company logo
1 of 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.

More Related Content

What's hot

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
 

What's hot (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 to 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 to 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
 

Recently uploaded

Antero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaAntero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaPaula Duarte
 
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
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfRavenaSales1
 
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 EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfHELENO FAVACHO
 
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptxProjeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptxIlda Bicacro
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSOLeloIurk1
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxAntonioVieira539017
 
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
 
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...AndreaCavalcante14
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
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
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfcomercial400681
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfLeloIurk1
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 

Recently uploaded (20)

Antero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escritaAntero de Quental, sua vida e sua escrita
Antero de Quental, sua vida e sua escrita
 
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
 
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdfGEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
GEOGRAFIA - COMÉRCIO INTERNACIONAL E BLOCOS ECONÔMICOS - PROF. LUCAS QUEIROZ.pdf
 
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 EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdfPROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
PROJETO DE EXTENÇÃO - GESTÃO DE RECURSOS HUMANOS.pdf
 
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptxProjeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
Projeto Nós propomos! Sertã, 2024 - Chupetas Eletrónicas.pptx
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
2° ANO - ENSINO FUNDAMENTAL ENSINO RELIGIOSO
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
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
 
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
Modelo de Plano Plano semanal Educação Infantil 5 anossemanal Educação Infant...
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
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...
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdfApresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
Apresentação ISBET Jovem Aprendiz e Estágio 2023.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdfENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
ENSINO RELIGIOSO 7º ANO INOVE NA ESCOLA.pdf
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.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.

Editor's Notes

  1. Colocar fundo quadro negro
  2. Substituir pelo fibonacci