Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
ANHANGUERA – 2015.2
ESTRUTURA DE DADOS
AULA 05 – RECURSÃO
Prof. Thomás da Costa
thomascosta@aedu.com
ESTRUTURA DE DADOS – Prof. Thomás da Costa
RECURSÃO
RECURSÃO
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Estudado em Programação Estruturada II:
• Vamos ver novamente recursividade.
• ...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
O que é:
É quando uma função, invoca a si mesma para resolver um problema em um...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Mais detalhes:
- É quando uma função invoca a si mesmo.
- As chamadas devem pos...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo de Fatorial:
No nosso exemplo vamos utilizar fatorial !!!
O que é fator...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
#include <iostream>
using namespace std;
int calcular_fatorial(int valor);
int ...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
...
int calcular_fatorial(int valor)
{
if (valor == 0)
return 1;
else
{
valor =...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
...
int calcular_fatorial(int valor)
{
if (valor == 0)
return 1;
else
{
valor =...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplo de Potenciação:
No próximo exemplo, vamos ver como criar um programa de...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
#include <iostream>
using namespace std;
int potencia(int base, int expoente);
...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
Exemplos:
• Analisamos alguns exemplos estudados em Programação Estruturada II....
ESTRUTURA DE DADOS – Prof. Thomás da Costa
RECURSÃO
Exercícios
Encontrar o valor máximo de um elemento de um vetor
com N p...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
#include <iostream>
using namespace std;
int maximo_vetor(int v[], int n);
int ...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
RECURSÃO
Exercícios
Efetuar a soma de um vetor utilizando recursão.
ESTRUTURA DE DADOS – Prof. Thomás da Costa
#include <iostream>
using namespace std;
int soma(int v[], int n);
int main()
{...
ESTRUTURA DE DADOS – Prof. Thomás da Costa
- É quando uma função invoca a si mesmo.
- As chamadas devem possuir um fim.
- ...
Obrigado !!!
ANHANGUERA – 2015.2
Nächste SlideShare
Wird geladen in …5
×

Estrutura de Dados - Aula 04

493 Aufrufe

Veröffentlicht am

Estrutura de Dados - Anhanguera
AULA 05 – RECURSÃO

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Estrutura de Dados - Aula 04

  1. 1. ANHANGUERA – 2015.2 ESTRUTURA DE DADOS AULA 05 – RECURSÃO Prof. Thomás da Costa thomascosta@aedu.com
  2. 2. ESTRUTURA DE DADOS – Prof. Thomás da Costa RECURSÃO RECURSÃO
  3. 3. ESTRUTURA DE DADOS – Prof. Thomás da Costa Estudado em Programação Estruturada II: • Vamos ver novamente recursividade. • Outro exemplos utilizando vetores. O conteúdo do material é o mesmo utilizado em Programação Estruturada 2 com mais exemplos. Vamos começar !!! RECURSÃO Recursividade
  4. 4. ESTRUTURA DE DADOS – Prof. Thomás da Costa O que é: É quando uma função, invoca a si mesma para resolver um problema em uma instância menor. RECURSÃO Recursividade
  5. 5. ESTRUTURA DE DADOS – Prof. Thomás da Costa 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. Vamos ver um exemplo !!! RECURSÃO Recursividade
  6. 6. ESTRUTURA DE DADOS – Prof. Thomás da Costa 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 !!! RECURSÃO Recursividade
  7. 7. ESTRUTURA DE DADOS – Prof. Thomás da Costa #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
  8. 8. ESTRUTURA DE DADOS – Prof. Thomás da Costa ... 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
  9. 9. ESTRUTURA DE DADOS – Prof. Thomás da Costa ... 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;
  10. 10. ESTRUTURA DE DADOS – Prof. Thomás da Costa 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 !!! RECURSÃO Recursividade
  11. 11. ESTRUTURA DE DADOS – Prof. Thomás da Costa #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; } } Chamada recursiva
  12. 12. ESTRUTURA DE DADOS – Prof. Thomás da Costa Exemplos: • Analisamos alguns exemplos estudados em Programação Estruturada II. • Vamos praticar um pouco mais. • Vamos começar !!! RECURSÃO Recursividade
  13. 13. ESTRUTURA DE DADOS – Prof. Thomás da Costa RECURSÃO Exercícios Encontrar o valor máximo de um elemento de um vetor com N posições.
  14. 14. ESTRUTURA DE DADOS – Prof. Thomás da Costa #include <iostream> using namespace std; int maximo_vetor(int v[], int n); int main() { int vetor[10] = { 2, 1, 10, 6, 1, 9, 1, 1, 0, 3 }; cout << maximo_vetor(vetor, 10); } int maximo_vetor(int v[], int n) { if (n == 1) return v[0]; else { int x; x = maximo_vetor(v, n-1); if (x > v[n-1]) return x; else return v[n-1]; } }
  15. 15. ESTRUTURA DE DADOS – Prof. Thomás da Costa RECURSÃO Exercícios Efetuar a soma de um vetor utilizando recursão.
  16. 16. ESTRUTURA DE DADOS – Prof. Thomás da Costa #include <iostream> using namespace std; int soma(int v[], int n); int main() { int soma_vetor[5] = { 8, 0, 1, 3, 5}; cout << soma(soma_vetor, 5); } int soma(int v[], int n) { if (n == 0) return 0; else { int s = soma(v, n-1); if (v[n-1] > 0) s += v[n-1]; return s; } }
  17. 17. ESTRUTURA DE DADOS – Prof. Thomás da Costa - É 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. RECURSÃO Resumo
  18. 18. Obrigado !!! ANHANGUERA – 2015.2

×