Programação Estruturada 2 - Aula 06

255 visualizações

Publicada em

Aula 06 - Recursividade

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
255
No SlideShare
0
A partir de incorporações
0
Número de incorporações
48
Ações
Compartilhamentos
0
Downloads
7
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Programação Estruturada 2 - Aula 06

  1. 1. Programação Estruturada II Aula 06 – Recursividade Prof. Thomás da Costa thomasdacosta@gmail.com Anhanguera – 2015.1
  2. 2. Recursividade RECURSIVIDADE Prof. Thomás da Costa Programação Estruturada II
  3. 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. 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. 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. 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. 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. 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. 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. 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. 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. 12. Recursividade Prof. Thomás da Costa Programação Estruturada II Semestre concluído !!! Parabéns a todos !!! THANKS FOR STUDYING
  13. 13. Recursividade Obrigado !!! Prof. Thomás da Costa Programação Estruturada II

×