C# Algoritmo Recursivo Recursividade

A função recursiva chama a si mesma passando parâmetros diferentes para sua próxima chamada.

Critério de saída
Toda função recursiva deve possuir um critério de saída, ou seja, uma forma de terminar a execução da função, do contrario, ela será chamada infinitamente. A grande vantagem da recursão está na possibilidade de usar um programa de computador finito para definir, analisar ou produzir um estoque potencialmente infinito de sentenças, design ou outros dados.

Exemplo Função 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 números naturais. Um exemplo de conjunto definido recursivamente é dado pelos números naturais: 0 está em N; Se n está em N, então n + 1 está em N. O conjunto dos números naturais é o menor conjunto satisfazendo as condições acima. Exemplo: o conjunto das proposições verdadeiras alcançáveis Outro exemplo interessante é o conjunto das proposições verdadeiras alcançáveis em um sistema axiomático. Se uma proposição é um axioma, ela é uma proposição verdadeira alcançável. Se uma proposição pode ser obtida de proposições verdadeiras alcançáveis por meio de regras de inferência, ela é uma proposição verdadeira alcançável. O conjunto das proposições verdadeiras alcançáveis é o menor conjunto de proposições verdadeiras satisfazendo estas condições. Esse conjunto é chamado 'proposições verdadeiras alcançáveis' por que: em aproximações não construtivas aos fundamentos da matemática, o conjunto das proposições verdadeiras é maior que o conjunto recursivamente construído a partir de axiomas e regras de inferência. Ver também teorema da incompletude de Gödel. (Note que determinar se certo objeto está ou não em um conjunto definido recursivamente não é uma tarefa algorítmica.)

vantagens da recursividade
usando a recursividade é possível reaproveitar uma função varias vezes. como no exemplo do fatorial torna-se muito mais simples (computacionalmente falando) a obtenção do resultado.

WriteLine("*** Calcular Fatorial ***"). } else { return numero * Fatorial(numero . } } static void Main(string[] args) { Console.Write("Digite um número: ").1).WriteLine(Fatorial(Convert. parar a execução. Console. Console.Recursividade “Critério de Saída ” Critério de saída é aquele dado que faz a função sair. } Função para dividir números utilizando somente soma e subtração Função divisaoRec(inteiro num.1).WriteLine("Fatorial de {0}:". Ex: //Função Recursiva static int Fatorial(int numero) { if (numero == 0) { return 1.ReadLine().ReadKey(). inteiro den) retorna Inteiro Inicio Se (num < den) Então Função_Retorna(0) . Console. string num = Console. Console. } Exemplos de Recursividade Função que retorna a soma dos números de 0 até n int soma(int n) { if (n > 0) return n + soma(n . else return 0.ToInt16(num))). Console.ReadLine(). num).

} . } } Algoritmo Recursivo de Fibonacci Public int Fibonacci(int n) { if(n==0).1). return Fibonacci (n-1) + Fibonacci(n-2).Senão Função_Retorna(divisaoRec(num-den. no exemplo abaixo é mostrada uma função recursiva que retorna a soma dos elementos de um vetor. den) + 1) Fim_Se Fim Funções recursivas também podem ser usadas para acessar elementos de vetores. if(n==1). if(n>1). return 1. int posicao) { if (posicao >= 0) { return vetor[posicao] + somador(vetor. int somador(int vetor[]. retun 0. posicao .

Sign up to vote on this title
UsefulNot useful