A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Recursividade Função recursiva é aquela que chama a si própria."— Transcrição da apresentação:

1 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.

2 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.

3 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.

4 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.

5 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;

6 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)))

7 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)

8 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)

9 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.

10 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 retorne n 4 senao retorne fibonacci(n-1) + fibonacci(n-2) 6 fim se 7 fim

11 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.

12 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.


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

Apresentações semelhantes


Anúncios Google