Recursividade Função recursiva é aquela que chama a si própria.

Slides:



Advertisements
Apresentações semelhantes
Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 13 Criado por Frederick H. Colclough, Colorado Technical University Recursão.
Advertisements

CES-10 INTRODUÇÃO À COMPUTAÇÃO
Amintas engenharia.
V Procedimentos – são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento é chamado. v Funções – são procedimentos.
Linguagem de Montagem Visão geral.
Recursividade Prof. Rosana Palazon.
Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 3 Criado por Frederick H. Colclough, Colorado Technical University Fundamentos das Funções.
Programação MAC-1 Exemplo: copiar vector
Aula 4 – Sumário Linguagem assembly do MAC-1 A pilha
Recursividade Prof. Alex F. V. Machado
Algoritmos e Estrutura de Dados I
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Recursividade Conceitos e Aplicações.
PROGRAMAÇÃO MODULAR (com uso de subprogramas)
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Vetores, Matrizes e Funções
Estruturas de Dados Homogêneas Unidimensionais – Vetores e Strings
Matrizes e Funções - Continuação
Modularização: funções e procedimentos
Matrizes clássicas e vectores em C++
Aula 10 Tipos Abstractos de Dados I. 2003/2004 Introdução à Programação 2 Flashback Lembram-se da Aula 4?
Modularização: funções e procedimentos (continuação)
Algoritmos e linguagens de programação 1 (aula 05)
do ... while Revendo: estrutura de repetição: while Formato geral:
Introdução a Estruturas de Dados Avançadas Utilizando Linguagem C
Introdução a Computação e Cálculo Numérico
Revisão /*======================================================*/
Introdução à Programação
Informática e Computação Estrutura de Repetição aula 13
VETORES Roteiro da aula Referência ao Programa: Estrutura de Dados
VETORES Roteiro da aula Referência ao Programa: Estrutura de Dados
Exercício 1 Faça um programa que receba como entrada o nome e o salário de um funcionário de uma empresa e que calcule o novo valor do salário do.
Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação
Linguagem de Programação II
UNIDADE 6 - complemento Funções recursivas
Programação II Estruturas de Dados Aula 02 - continuação
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Recursão.
Linguagem de programação
Programação em C++ Compiladores
Procedural vs. OO (Figuras Geométricas: Área do triângulo)
Algoritmo e Programação
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014
F UNÇÕES : PASSAGEM DE PARÂMETROS Aluno:Kaynã Vasconcelos Santos Matéria: Estrutura de dados e algoritmos I Turma: Professor: Danilo Silva dos Santos.
Roteiro Jogo de adivinhação Tarefa Desafio Algoritmo do jogo
Linguagem de Programação JAVA
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Algoritmos - Profa. Alciléia1 Profa. Maria Alciléia Alves Rocha Funções em C 2011.
Informática e Computação Estrutura de Repetição aula 12
Algoritmos e Estruturas de Dados RECURSIVIDADE. O que é recursividade? Recursividade significa algo ser definido em termos de sí próprio. Em termos de.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 07) Prof. Alessandro Bernardo.
Introdução à Linguagem C
Regras de escopo Escopo: trecho de codificação no qual o identificador possui significado Escopo de função: identificador válido dentro do trecho de uma.
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 03) Prof. Alessandro Bernardo.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 09) Prof. Alessandro Bernardo.
Recursividade Profs. De Prog2 e Lab2.
1 Aula 6 – Sumário  Revisão da aula anterior  Endereçamento indirecto  Recursividade  Conceito  Exemplos.
Algoritmo e Estrutura de Dados I
Informática e Computação Aula 12 Estrutura de Repetição
Recursividade Aula I – ALG II CPAN – UFMS. Recursividade A recursão é uma técnica pela qual uma rotina estruturada faz chamadas a ela mesma, com o objetivo.
BCC221 Programação Orientada a Objetos Prof. Marco Antonio M. Carvalho 2014/2.
FACULDADE DE CIÊNCIAS SOCIAIS E TECNOLÓGICAS Tecnologia em Redes de Computadores Algoritmos e linguagens de programação 1 (aula 08) Prof. Alessandro Bernardo.
VETORES AULA 01 Roteiro da aula Referência ao Programa: Estrutura de Dados.  Variáveis Compostas homogenias   Objetivo: apresentar VETOR.
Professor Luiz José Hoffmann Filho
PCI- Funções e Procedimentos Profa. Mercedes Gonzales Márquez.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Recursividade e análise Cristiano Arbex Valle Vinicius Fernandes dos Santos
Transcrição da apresentação:

Recursividade Função recursiva é aquela que chama a si própria. Também pode ser considerado, se chamar outras funções que, em algum momento, chamem a primeira função, tornando esse conjunto de funções um processo recursivo. É um recurso de programação que pode ser usada na linguagem C, Java, Visual Basic, entre outras.

Recursividade As funções recursivas são soluções mais elegantes e simples, se comparadas a funções tradicionais, já que executam tarefas repetitivas sem utilizar nenhuma estrutura de repetição, como for ou while. Essa elegância e simplicidade têm um preço que requer muita atenção em sua implementação.

Recursividade Uma função pode chamar a si própria por um número limitado de vezes. Esse limite é dado pelo tamanho da pilha. Se o valor correspondente ao tamanho máximo da pilha for atingido, haverá um estouro da pilha ou “Stack Overflow. Cada vez que uma função é chamada de forma recursiva, são alojados e armazenados uma cópia dos seus parâmetros, de modo a não perder os valores dos parâmetros das chamadas anteriores.

Funções recursivas contem duas partes fundamentais: Ponto de Parada ou Condição de Parada: é o ponto onde a função será encerrada. Regra Geral: é o método que reduz a resolução do problema através da invocação recursiva de casos menores, que por sua vez são resolvidos pela resolução de casos ainda menores pela própria função, assim sucessivamente até atingir o “ponto de parada” que finaliza a função.

Exemplo de função recursiva: cálculo do somatório #include <iostream> using namespace std; int soma(int x) { int y; if( x == 0 ) { cout <<x << " ) \n"; return 0; } else { cout <<" ( "<< x << " + "; y = x + soma(x -1); cout <<"soma parcial = "<<y<<"\n"; return y; int main() { int num; cout << "Digite o numero: "; cin >> num;; cout<<"\nA soma de 0 ate "<<num <<" = "<<soma(num)<<"\n"; system("pause"); Antes de fazer este exercício, propor fazer exercício que leia um numero, calcule em uma função a soma deste numero de 0 ate o numero lido suma função e mostre a soma deste numero. #include <iostream> using namespace std; int soma(int x) { int y=0,cont; for (cont=0;cont<=x;cont++) { cout << cont; y=y+cont; } return y; int main() { int num; cout << "Digite o numero: "; cin >> num;; cout<<"\nA soma de 0 ate "<<num <<" = "<<soma(num)<<"\n"; system("pause"); return 0;

Demonstrativo Somatório 5 15 5+Soma(5-1) 5+10 5+(4+Soma(4-1)) 5+(4+6) 5+(4+(3+Soma(3-1))) 5+(4+(3+3) 5+(4+(3+(2+Soma(2-1)))) 5+(4+(3+(2 +1)))

Exercícios: 1. Fazer uma função recursiva que calcule o fatorial de um número. O número deverá ser lido no programa principal. Demonstrativo da solução: 5! 120 5*4! 5*(24) 4*3! 4*(6) 3*2! 3*(2) 2*1! 2*(1) 1 1*(1)

Exercícios: 2. O que fará e qual será o resultado do exercício abaixo? //Recursividade na Linguagem C #include <math.h> #include <iostream> using namespace std; int funcao(int x) { cout << "\n" << x; if(abs(x) < 10 ) return 1; else return(1 + funcao(x/10)); } int main() { int num; num=10145; cout <<" Total: " << funcao(num); system ("pause"); return 0; } 1+ (1000/10) 1+1+ (100/10) 1+1+1+(10/10)

Exercícios: 3. Fazer um programa que leia,some 2 valores inteiros e mostre o resultado da soma. No final do programa, deverá ter uma recursividade que chame novamente o programa principal, mostre a mensagem “Digite 1 se desejar executar o programa novamente”,caso positivo, executar o programa novamente caso negativo, terminar a execução do programa.

Exercícios: 4. Questão da prova do ENADE 2008. Os termos da seqüência de Fibonacci são definidos por: Fibonacci(0) = 0 Fibonacci(1) = 1 Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2)   Uma solução recursiva para o cálculo do i-ésimo termo da seqüência é dada pela função a seguir. 1 funcao fibonacci(inteiro longo n) 2 se((n=0) OU (n=1)) entao 3 retorne n 4 senao 5 retorne fibonacci(n-1) + fibonacci(n-2) 6 fim se 7 fim

Exercícios: (continuação exercício 4): Acerca da execução recursiva dessa função, assinale a opção incorreta. À medida que o valor de n cresce, há um aumento no número de chamadas recursivas. O método recursivo é o mais eficiente para o cálculo do i-ésimo termo da seqüência de Fibonacci, pois realiza duas chamadas por passo da recursão, cada uma mais simples do que a chamada original. Na linha 5, a ordem de execução é calcular o valor para fibonacci(n- 1) e somente depois calcular o valor para fibonacci(n-2). As condições de parada da recursão são: o valor de n é 0 ou o valor de n é 1.

fazer exercício que leia um numero, calcule em uma função a soma deste numero de 0 ate o numero lido em uma função e mostre a soma deste numero.