SlideShare uma empresa Scribd logo
Programação Estruturada II
Aula 06 – Recursividade
Prof. Thomás da Costa
thomasdacosta@gmail.com
Anhanguera – 2015.1
Recursividade
RECURSIVIDADE
Prof. Thomás da Costa Programação Estruturada II
Recursividade
O que é:
É quando uma função, invoca a si mesma para resolver um problema em uma
instância menor.
Recursividade
Prof. Thomás da Costa Programação Estruturada II
Recursividade
Mais detalhes:
- É quando uma função invoca a si mesmo
- As chamadas devem possuir um fim
- O programa pode ficar em um loop infinito
- Dependendo da sua forma de utilização, pode ser lento
- Existe uma pilha de execução
- Simplifica algumas lógicas de programação
- Programas recursivos são complexos
- Possuem grande semelhança com instruções de laços
- Muito cuidado: existe um limite para uma função chamar a si próprio
- Esse limite é definido por cada compilador e linguagem
Recursividade
Prof. Thomás da Costa Programação Estruturada II
Vamos ver um exemplo !!!
Recursividade
Exemplo de Fatorial:
No nosso exemplo vamos utilizar fatorial !!!
O que é fatorial?
É o produto de todos os seus antecessores, incluindo si próprio e excluindo o zero
Exemplo: 6! = 6 * 5 * 4 * 3 * 2 * 1 = 720
FATORIAL DE 6 É 720 !!!
Recursividade
Prof. Thomás da Costa Programação Estruturada II
Prof. Thomás da Costa Programação Estruturada II
Exemplo 1
#include <iostream>
using namespace std;
int calcular_fatorial(int valor);
int main()
{
cout << "Valor do fatorial:" << calcular_fatorial(6);
}
int calcular_fatorial(int valor)
{
if (valor == 0)
return 1;
else
{
valor = (valor * calcular_fatorial(valor - 1));
cout << valor << endl;
return valor;
}
}
Chamada recursiva
Vamos ver o programa
passo-a-passo, analisando a
pilha de execução
Prof. Thomás da Costa Programação Estruturada II
Exemplo 1
...
int calcular_fatorial(int valor)
{
if (valor == 0)
return 1;
else
{
valor = (valor * calcular_fatorial(valor - 1));
cout << valor << endl;
return valor;
}
}
calcular_fatorial(6) -> valor = (6 * calcular_fatorial(5));
calcular_fatorial(5) -> valor = (5 * calcular_fatorial(4));
calcular_fatorial(4) -> valor = (4 * calcular_fatorial(3));
calcular_fatorial(3) -> valor = (3 * calcular_fatorial(2));
calcular_fatorial(2) -> valor = (2 * calcular_fatorial(1));
calcular_fatorial(1) -> valor = (1 * calcular_fatorial(0));
calcular_fatorial(0) -> return 1;
Pilha de execução
Fim da recursividade
Prof. Thomás da Costa Programação Estruturada II
Exemplo 1
...
int calcular_fatorial(int valor)
{
if (valor == 0)
return 1;
else
{
valor = (valor * calcular_fatorial(valor - 1));
cout << valor << endl;
return valor;
}
}
calcular_fatorial(6) -> valor = (6 * 5 * 4 * 3 * 2 * 1 * 1);
calcular_fatorial(5) -> valor = (5 * 4 * 3 * 2 * 1 * 1);
calcular_fatorial(4) -> valor = (4 * 3 * 2 * 1 * 1);
calcular_fatorial(3) -> valor = (3 * 2 * 1 * 1);
calcular_fatorial(2) -> valor = (2 * 1 * 1);
calcular_fatorial(1) -> valor = (1 * 1);
calcular_fatorial(0) -> return 1;
Recursividade
Exemplo de Potenciação:
No próximo exemplo, vamos ver como criar um programa de potenciação.
O que é potenciação?
É o produto de um número por ele mesmo, em uma quantidade de vezes definida.
Exemplo: 5³ = 5 * 5 * 5 = 125
POTÊNCIA DE 5 É 125 !!!
Recursividade
Prof. Thomás da Costa Programação Estruturada II
#include <iostream>
using namespace std;
int potencia(int base, int expoente);
int main()
{
int base = 5;
int expoente = 3;
cout << "Potencia:" << potencia(base, expoente);
}
int potencia(int base, int expoente)
{
if (expoente == 0)
return 1;
else
{
int valor = base * potencia(base, expoente - 1);
cout << valor << endl;
return valor;
}
}
Prof. Thomás da Costa Programação Estruturada II
Exemplo 2
Chamada recursiva
Recursividade
Resumo:
Vamos relembrar os itens do começo da aula:
- É quando uma função invoca a si mesmo
- As chamadas devem possuir um fim
- O programa pode ficar em um loop infinito
- Dependendo da sua forma de utilização, pode ser lento
- Existe uma pilha de execução
- Simplifica algumas lógicas de programação
- Programas recursivos são complexos
- Possuem grande semelhança com instruções de laços
- Muito cuidado: existe um limite para uma função chamar a si próprio
Recursividade
Prof. Thomás da Costa Programação Estruturada II
Recursividade
Prof. Thomás da Costa Programação Estruturada II
Semestre concluído !!! Parabéns a todos !!!
THANKS FOR STUDYING
Recursividade
Obrigado !!!
Prof. Thomás da Costa Programação Estruturada II

Mais conteúdo relacionado

PDF
Programação Estruturada 2 - Curso Completo
PPTX
Programação Estruturada 2 - Aula 01
PPTX
Programação Estruturada 2 - Aula 02
DOCX
Exercícios da Aula de LAB 01
DOCX
Programação Estruturada 2 - Aula 01 - Código Fonte
PPTX
LAB 01 - Programação Estruturada 2
PPTX
Linguagem de Programação Java
PPTX
Algoritmos e Técnicas de Programação - Aula 03
Programação Estruturada 2 - Curso Completo
Programação Estruturada 2 - Aula 01
Programação Estruturada 2 - Aula 02
Exercícios da Aula de LAB 01
Programação Estruturada 2 - Aula 01 - Código Fonte
LAB 01 - Programação Estruturada 2
Linguagem de Programação Java
Algoritmos e Técnicas de Programação - Aula 03

Mais procurados (20)

PDF
Conceitos e técnicas de programação aula 2
PPTX
Algoritmos e Técnicas de Programação - Aula 04
PPT
Conceitos Fundamentais de Programacao
PPT
A linguagem de programação c
PPTX
Algoritmos e Técnicas de Programação - Curso Completo
PPTX
Programação Concorrente - Aula 02
PDF
Linguagem C (UFRPE)
PDF
Conceitos e técnicas de programação aula 1
PDF
Microprocessadores ii revisão de linguagem de programação (parte2)
PPTX
Etapas da programação
PDF
Linguagem c parte 1
PPT
As cinco etapas da programação
PDF
C curso - notas de aula
PPTX
Programando em C++ // Estrutura Básica
PDF
Conceitos e técnicas de programação apresentação
PPTX
TDC2014 SP - C/C++ - Modularização de Código C
PPTX
Algoritmos e Técnicas de Programação - Aula 01
PDF
Introdução a linguagem c karen lowhany
PDF
Conceitos e técnicas de programação introdução
PPTX
Lógica e Matemática Computacional - Aula 04
Conceitos e técnicas de programação aula 2
Algoritmos e Técnicas de Programação - Aula 04
Conceitos Fundamentais de Programacao
A linguagem de programação c
Algoritmos e Técnicas de Programação - Curso Completo
Programação Concorrente - Aula 02
Linguagem C (UFRPE)
Conceitos e técnicas de programação aula 1
Microprocessadores ii revisão de linguagem de programação (parte2)
Etapas da programação
Linguagem c parte 1
As cinco etapas da programação
C curso - notas de aula
Programando em C++ // Estrutura Básica
Conceitos e técnicas de programação apresentação
TDC2014 SP - C/C++ - Modularização de Código C
Algoritmos e Técnicas de Programação - Aula 01
Introdução a linguagem c karen lowhany
Conceitos e técnicas de programação introdução
Lógica e Matemática Computacional - Aula 04
Anúncio

Destaque (20)

PPTX
Estrutura de Dados - Aula 07
PPTX
Programação Estruturada 2 - Aula 05
PPTX
Estrutura de Dados - Aula 08
PDF
Aula 02 Primeiro Cod Java
DOCX
Programação Estruturada 2 - Aula 06 - Código Fonte
PPTX
Algoritmos e Estrutura de Dados - Aula 05
PPTX
Algoritmos e Estrutura de Dados - Aula 03
PPTX
Algoritmos e Estrutura de Dados - Aula 04
PPTX
Programação Estruturada 2 - Aula 04
DOCX
Exercícios da Aula de LAB 02
PPTX
Programação Estruturada 2 - Aula 03
PPTX
LAB 03 - Programação Estruturada 2
PDF
Exercícios da Aula de LAB 03
PPTX
Revisão - Funções
PPTX
LAB 02 - Programação Estruturada 2
PPTX
Estrutura de Dados - Aula 01
PDF
Java persintence api
PDF
Javafx Introdução
PPT
Internet das Coisas com Java e Things API
PPT
Palestra Sepai Alfredofurtado Introducao Ao Javafx
Estrutura de Dados - Aula 07
Programação Estruturada 2 - Aula 05
Estrutura de Dados - Aula 08
Aula 02 Primeiro Cod Java
Programação Estruturada 2 - Aula 06 - Código Fonte
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 03
Algoritmos e Estrutura de Dados - Aula 04
Programação Estruturada 2 - Aula 04
Exercícios da Aula de LAB 02
Programação Estruturada 2 - Aula 03
LAB 03 - Programação Estruturada 2
Exercícios da Aula de LAB 03
Revisão - Funções
LAB 02 - Programação Estruturada 2
Estrutura de Dados - Aula 01
Java persintence api
Javafx Introdução
Internet das Coisas com Java e Things API
Palestra Sepai Alfredofurtado Introducao Ao Javafx
Anúncio

Semelhante a Programação Estruturada 2 - Aula 06 (19)

PPTX
Estrutura de Dados - Aula 04
PPT
Recursividade
PPTX
PDF
Recursividade
PPTX
PPTX
Apresentação recursividade rev2
PPTX
Estrutura de dados em Java - Recursividade
PDF
Pged 07
PPSX
Recursividade
PPTX
Recursividade
PPT
Recursividade em C
PDF
Recursividade em linguagem C
PPT
Pesquisa e ordenação recursividade
PDF
aula de cálculo pdf atualizado 2023 funções
PPTX
AP5_2013_2.pptx
PDF
Relações de recorrência
PDF
12 algoritmos e funcoes recursivas
PPTX
Algoritmos - Aula 07 A - Lacos
PDF
Algoritmos e LP - Aula 05 - Estruturas de Repeticao - p2.pdf
Estrutura de Dados - Aula 04
Recursividade
Recursividade
Apresentação recursividade rev2
Estrutura de dados em Java - Recursividade
Pged 07
Recursividade
Recursividade
Recursividade em C
Recursividade em linguagem C
Pesquisa e ordenação recursividade
aula de cálculo pdf atualizado 2023 funções
AP5_2013_2.pptx
Relações de recorrência
12 algoritmos e funcoes recursivas
Algoritmos - Aula 07 A - Lacos
Algoritmos e LP - Aula 05 - Estruturas de Repeticao - p2.pdf

Mais de thomasdacosta (20)

PPTX
Azure Functions e Java: Do Desenvolvimento a Produção
PPTX
Programação de Sistemas Distribuídos - Aula 03
PPTX
Programação de Sistemas Distribuídos - Aula 02
PPTX
Programação de Sistemas Distribuídos - Aula 01
PPTX
Organização de Computadores - Aula 02
PPTX
Organização de Computadores - Aula 03
PPTX
Organização de Computadores - Aula 01
PPTX
Redes de Computadores - Exercícios 06
PPTX
Redes de Computadores - Exercícios 05
PPTX
Programação Concorrente - Curso Completo
PPTX
Programação Concorrente - Aula 07
PPTX
Programação Concorrente - Aula 06
PPTX
Redes de Computadores - Exercícios 04
PPTX
Redes de Computadores - Aula 05
PPTX
Programação Concorrente - Aula 05
PPTX
Programação Concorrente - Aula 04
PPTX
Redes de Computadores - Exercícios 03
PPTX
Redes de Computadores - Aula 04
PPTX
Programação Concorrente - Aula 03
PPTX
Redes de Computadores - Aula 03
Azure Functions e Java: Do Desenvolvimento a Produção
Programação de Sistemas Distribuídos - Aula 03
Programação de Sistemas Distribuídos - Aula 02
Programação de Sistemas Distribuídos - Aula 01
Organização de Computadores - Aula 02
Organização de Computadores - Aula 03
Organização de Computadores - Aula 01
Redes de Computadores - Exercícios 06
Redes de Computadores - Exercícios 05
Programação Concorrente - Curso Completo
Programação Concorrente - Aula 07
Programação Concorrente - Aula 06
Redes de Computadores - Exercícios 04
Redes de Computadores - Aula 05
Programação Concorrente - Aula 05
Programação Concorrente - Aula 04
Redes de Computadores - Exercícios 03
Redes de Computadores - Aula 04
Programação Concorrente - Aula 03
Redes de Computadores - Aula 03

Último (19)

PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Apple Pippin Uma breve introdução. - David Glotz
Aula04-Academia Heri- Tecnologia Geral 2025
Processos na gestão de transportes, TM100 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
COBITxITIL-Entenda as diferença em uso governança TI
Custos e liquidação no SAP Transportation Management, TM130 Col18
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula 18 - Manipulacao De Arquivos python
Apple Pippin Uma breve introdução. - David Glotz

Programação Estruturada 2 - Aula 06

  • 1. Programação Estruturada II Aula 06 – Recursividade Prof. Thomás da Costa thomasdacosta@gmail.com Anhanguera – 2015.1
  • 2. Recursividade RECURSIVIDADE Prof. Thomás da Costa Programação Estruturada II
  • 3. Recursividade O que é: É quando uma função, invoca a si mesma para resolver um problema em uma instância menor. Recursividade Prof. Thomás da Costa Programação Estruturada II
  • 4. Recursividade Mais detalhes: - É quando uma função invoca a si mesmo - As chamadas devem possuir um fim - O programa pode ficar em um loop infinito - Dependendo da sua forma de utilização, pode ser lento - Existe uma pilha de execução - Simplifica algumas lógicas de programação - Programas recursivos são complexos - Possuem grande semelhança com instruções de laços - Muito cuidado: existe um limite para uma função chamar a si próprio - Esse limite é definido por cada compilador e linguagem Recursividade Prof. Thomás da Costa Programação Estruturada II Vamos ver um exemplo !!!
  • 5. Recursividade Exemplo de Fatorial: No nosso exemplo vamos utilizar fatorial !!! O que é fatorial? É o produto de todos os seus antecessores, incluindo si próprio e excluindo o zero Exemplo: 6! = 6 * 5 * 4 * 3 * 2 * 1 = 720 FATORIAL DE 6 É 720 !!! Recursividade Prof. Thomás da Costa Programação Estruturada II
  • 6. Prof. Thomás da Costa Programação Estruturada II Exemplo 1 #include <iostream> using namespace std; int calcular_fatorial(int valor); int main() { cout << "Valor do fatorial:" << calcular_fatorial(6); } int calcular_fatorial(int valor) { if (valor == 0) return 1; else { valor = (valor * calcular_fatorial(valor - 1)); cout << valor << endl; return valor; } } Chamada recursiva Vamos ver o programa passo-a-passo, analisando a pilha de execução
  • 7. Prof. Thomás da Costa Programação Estruturada II Exemplo 1 ... int calcular_fatorial(int valor) { if (valor == 0) return 1; else { valor = (valor * calcular_fatorial(valor - 1)); cout << valor << endl; return valor; } } calcular_fatorial(6) -> valor = (6 * calcular_fatorial(5)); calcular_fatorial(5) -> valor = (5 * calcular_fatorial(4)); calcular_fatorial(4) -> valor = (4 * calcular_fatorial(3)); calcular_fatorial(3) -> valor = (3 * calcular_fatorial(2)); calcular_fatorial(2) -> valor = (2 * calcular_fatorial(1)); calcular_fatorial(1) -> valor = (1 * calcular_fatorial(0)); calcular_fatorial(0) -> return 1; Pilha de execução Fim da recursividade
  • 8. Prof. Thomás da Costa Programação Estruturada II Exemplo 1 ... int calcular_fatorial(int valor) { if (valor == 0) return 1; else { valor = (valor * calcular_fatorial(valor - 1)); cout << valor << endl; return valor; } } calcular_fatorial(6) -> valor = (6 * 5 * 4 * 3 * 2 * 1 * 1); calcular_fatorial(5) -> valor = (5 * 4 * 3 * 2 * 1 * 1); calcular_fatorial(4) -> valor = (4 * 3 * 2 * 1 * 1); calcular_fatorial(3) -> valor = (3 * 2 * 1 * 1); calcular_fatorial(2) -> valor = (2 * 1 * 1); calcular_fatorial(1) -> valor = (1 * 1); calcular_fatorial(0) -> return 1;
  • 9. Recursividade Exemplo de Potenciação: No próximo exemplo, vamos ver como criar um programa de potenciação. O que é potenciação? É o produto de um número por ele mesmo, em uma quantidade de vezes definida. Exemplo: 5³ = 5 * 5 * 5 = 125 POTÊNCIA DE 5 É 125 !!! Recursividade Prof. Thomás da Costa Programação Estruturada II
  • 10. #include <iostream> using namespace std; int potencia(int base, int expoente); int main() { int base = 5; int expoente = 3; cout << "Potencia:" << potencia(base, expoente); } int potencia(int base, int expoente) { if (expoente == 0) return 1; else { int valor = base * potencia(base, expoente - 1); cout << valor << endl; return valor; } } Prof. Thomás da Costa Programação Estruturada II Exemplo 2 Chamada recursiva
  • 11. Recursividade Resumo: Vamos relembrar os itens do começo da aula: - É quando uma função invoca a si mesmo - As chamadas devem possuir um fim - O programa pode ficar em um loop infinito - Dependendo da sua forma de utilização, pode ser lento - Existe uma pilha de execução - Simplifica algumas lógicas de programação - Programas recursivos são complexos - Possuem grande semelhança com instruções de laços - Muito cuidado: existe um limite para uma função chamar a si próprio Recursividade Prof. Thomás da Costa Programação Estruturada II
  • 12. Recursividade Prof. Thomás da Costa Programação Estruturada II Semestre concluído !!! Parabéns a todos !!! THANKS FOR STUDYING
  • 13. Recursividade Obrigado !!! Prof. Thomás da Costa Programação Estruturada II