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

Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfFrancisco Márcio Bezerra Oliveira
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...PatriciaCaetano18
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosLucianoPrado15
 
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
 
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
 
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
 
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
 
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
 
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
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticash5kpmr7w7
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxMarcosLemes28
 
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
 
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
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxFlviaGomes64
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxTailsonSantos1
 
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 - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptjricardo76
 
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
 

Recently uploaded (20)

Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdfRecomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
Recomposiçao em matematica 1 ano 2024 - ESTUDANTE 1ª série.pdf
 
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
A EDUCAÇÃO FÍSICA NO NOVO ENSINO MÉDIO: IMPLICAÇÕES E TENDÊNCIAS PROMOVIDAS P...
 
migração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenosmigração e trabalho 2º ano.pptx fenomenos
migração e trabalho 2º ano.pptx fenomenos
 
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
 
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
 
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
 
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
 
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
 
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
 
Slide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemáticaSlide - SAEB. língua portuguesa e matemática
Slide - SAEB. língua portuguesa e matemática
 
Educação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptxEducação Financeira - Cartão de crédito665933.pptx
Educação Financeira - Cartão de crédito665933.pptx
 
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 ...
 
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*
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Os editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptxOs editoriais, reportagens e entrevistas.pptx
Os editoriais, reportagens e entrevistas.pptx
 
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 - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
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
 

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