Você está na página 1de 3

C# Algoritmo Recursivo Recursividade

A funo recursiva chama a si mesma passando parmetros diferentes para sua prxima chamada.

Critrio de sada
Toda funo recursiva deve possuir um critrio de sada, ou seja, uma forma de terminar a execuo da funo, do contrario, ela ser chamada infinitamente. A grande vantagem da recurso est na possibilidade de usar um programa de computador finito para definir, analisar ou produzir um estoque potencialmente infinito de sentenas, design ou outros dados.

Exemplo Funo recursiva de Fibonacci.


int Fibonacci (int n) { if (n == 1) { return n; } if (n == 0) {return n; } return Fibonacci (n - 1) + Fibonacci (n - 2);

Conjuntos definidos recursivamente


Exemplo: os nmeros naturais. Um exemplo de conjunto definido recursivamente dado pelos nmeros naturais: 0 est em N; Se n est em N, ento n + 1 est em N. O conjunto dos nmeros naturais o menor conjunto satisfazendo as condies acima. Exemplo: o conjunto das proposies verdadeiras alcanveis Outro exemplo interessante o conjunto das proposies verdadeiras alcanveis em um sistema axiomtico. Se uma proposio um axioma, ela uma proposio verdadeira alcanvel. Se uma proposio pode ser obtida de proposies verdadeiras alcanveis por meio de regras de inferncia, ela uma proposio verdadeira alcanvel. O conjunto das proposies verdadeiras alcanveis o menor conjunto de proposies verdadeiras satisfazendo estas condies. Esse conjunto chamado 'proposies verdadeiras alcanveis' por que: em aproximaes no construtivas aos fundamentos da matemtica, o conjunto das proposies verdadeiras maior que o conjunto recursivamente construdo a partir de axiomas e regras de inferncia. Ver tambm teorema da incompletude de Gdel. (Note que determinar se certo objeto est ou no em um conjunto definido recursivamente no uma tarefa algortmica.)

vantagens da recursividade
usando a recursividade possvel reaproveitar uma funo varias vezes. como no exemplo do fatorial torna-se muito mais simples (computacionalmente falando) a obteno do resultado.

Recursividade Critrio de Sada


Critrio de sada aquele dado que faz a funo sair, parar a execuo. Ex: //Funo Recursiva static int Fatorial(int numero) { if (numero == 0) { return 1; } else { return numero * Fatorial(numero - 1); }

} static void Main(string[] args) { Console.WriteLine("*** Calcular Fatorial ***"); Console.Write("Digite um nmero: "); string num = Console.ReadLine(); Console.WriteLine("Fatorial de {0}:", num); Console.WriteLine(Fatorial(Convert.ToInt16(num))); Console.ReadLine(); Console.ReadKey(); }

Exemplos de Recursividade
Funo que retorna a soma dos nmeros de 0 at n int soma(int n) { if (n > 0) return n + soma(n - 1); else return 0; } Funo para dividir nmeros utilizando somente soma e subtrao Funo divisaoRec(inteiro num, inteiro den) retorna Inteiro Inicio Se (num < den) Ento Funo_Retorna(0)

Seno Funo_Retorna(divisaoRec(num-den, den) + 1) Fim_Se Fim Funes recursivas tambm podem ser usadas para acessar elementos de vetores, no exemplo abaixo mostrada uma funo recursiva que retorna a soma dos elementos de um vetor.
int somador(int vetor[], int posicao) { if (posicao >= 0) { return vetor[posicao] + somador(vetor, posicao - 1); } }

Algoritmo Recursivo de Fibonacci


Public int Fibonacci(int n) { if(n==0); retun 0; if(n==1); return 1; if(n>1); return Fibonacci (n-1) + Fibonacci(n-2); }

Você também pode gostar