Introdução à função recursiva em C #
Na Função Recursiva em C #, Recursão significa denotar o mesmo significado que no idioma inglês, precisamente conhecido como repetição. Portanto, a natureza recursiva de uma função indica fazer o mesmo trabalho repetidamente. E, sim, se o programa não for tratado corretamente, ele definitivamente executaria o programa em um loop contínuo. Temos que ter certeza de especificar condições adequadas na execução dessas funções recursivas; caso contrário, a função estaria se chamando, repetidamente, levando a uma execução contínua do programa. Aqui vamos em frente e ver como podemos criar essas funções em C #.
Sintaxe de funções recursivas em c #
A sintaxe aqui é igual à sintaxe da função básica em C #. Vamos dar uma olhada aqui.
Não há sintaxe especial aqui, mas podemos observar que uma função está se chamando para fornecer o resultado de retorno. E devemos ter muito cuidado em passar esses valores de parâmetro para essa função recursiva, pois obviamente não queremos um código em execução que não pare.
Na sintaxe acima, não há nada como, temos que chamar a função apenas nas instruções de retorno. Em vez disso, podemos até atribuir o valor de retorno da função recursiva a uma variável e retornar essa variável também.
Execução da fatoração
Aqui vamos usar nossa declaração de problema padrão, fatoração, para gerar nossa função recursiva.
Código:
using System;
class First (
static void Main() (
int result;
result = fact(7);
Console.WriteLine("Factorial is : " + result);
)
public static int fact(int num)
(
if(num==0)
(
return 1;
)
return num*fact(num-1);
)
)
Vamos dar uma olhada no processo passo a passo.
- Primeiro, criamos nossa própria função parametrizada para obter um valor de entrada da função principal, para a qual queremos calcular o fatorial.
- Em seguida, criamos uma condição if para verificar se o número fornecido é zero. Se o número for zero, retornamos 1 como nosso valor padrão.
- Senão, estamos multiplicando o número atual com a função considerando o número menos 1 como parâmetro.
- Portanto, essa multiplicação se repete até chegar ao número 0. Como, por padrão, escrevemos nossa saída de retorno para zero como 1, o resultado final seria multiplicado por 1.
Resultado:
Agora, no código, substituirei nosso parâmetro de função de num menos 1 para, num. Nesse caso, a função se chamaria repetidamente e o processo seria repetido.
Código:
using System;
class First (
static void Main() (
int result;
result = fact(7);
Console.WriteLine("Factorial is : " + result);
)
public static int fact(int num)
(
if(num==0)
(
return 1;
)
return num*fact(num);
)
)
Resultado:
Através da saída acima, podemos ver claramente a exceção de estouro de pilha, onde a função está se chamando repetidamente. Somente a parte destacada é alterada em relação ao primeiro programa.
Da mesma forma, podemos fazer o número como um valor inserido pelo usuário como abaixo:
Código:
using System;
class First (
static void Main() (
int result, c;
string a;
Console.Write("Enter value for number :");
a = Console.ReadLine();
c = Convert.ToInt32(a);
result = fact(c);
Console.WriteLine("Factorial is : " + result);
)
public static int fact(int num)
(
if(num==0)
(
return 1;
)
return num*fact(num-1);
)
)
Resultado:
E se dermos zero como entrada? Sim, um seria devolvido.
Resultado:
Agora, e se dermos um número negativo?
Resultado:
Isso também me deu uma exceção de estouro de pilha, pois nossa função de recursão fatorial está diminuindo seu valor do parâmetro em cada execução. Portanto, os números negativos continuariam reduzidos para -6, -7, -8 e assim por diante. Essa é a razão pela qual vamos a essa exceção.
Como exercício, você pode tentar criar uma função recursiva para números negativos?
Dica: Podemos pegar uma pré-condição de número menor que zero e adicionar uma ao nosso parâmetro de função recursiva até que zero chegue.
Exemplos de função recursiva em c #
Existem alguns bons exemplos que podem ser citados com relação às funções recursivas:
Temos alguns outros lugares onde podemos usar essas funções recursivas.
- Imprima números de um determinado ponto inicial e final continuamente. (Programa abaixo)
- Adicione números a partir de um determinado ponto inicial e pare no ponto final ou quando uma soma específica for atingida.
- Imprima números que são divididos por qualquer número específico em um intervalo específico.
- Queremos imprimir qualquer número de linhas ou pontos contínuos depois de escrever uma frase e muito mais.
Como você pode observar, a função recursiva é semelhante à funcionalidade de um loop, mas onde estamos chamando a mesma função repetidamente.
Vamos ver como podemos escrever uma função recursiva adicionando números continuamente até que o programa encontre o segundo número que é dado como entrada.
Código:
using System;
class First (
static void Main() (
int result, c, d;
string a, b;
Console.Write("Enter value for 1st number :");
a = Console.ReadLine();
c = Convert.ToInt32(a);
Console.Write("Enter value for 2nd number :");
b = Console.ReadLine();
d = Convert.ToInt32(b);
result = add(c, d);
Console.WriteLine("Add is : " + result);
)
public static int add(int num1, int num2)
(
int sum ;
sum=num1;
if (num1 < num2 )
(
num1++;
sum=sum+add(num1, num2);
return sum;
)
return sum;
)
)
Aqui, o que fizemos é:
- Pegamos dois números num1 e num2 nas entradas do usuário
- Adicionar função, adiciona os números começando de num1 até obter o num2.
Por exemplo, se eu pegar num1 = 5 e num2 = 8, a soma da saída que obtemos é 5 + 6 + 7 + 8, que é 26.
Resultado:
E se eu der num1 menos que num2?
Resultado:
Ele fornece alguns como o valor num1 como primeiro, atribuímos o valor de soma ao valor num1 e retornamos soma se a instrução if não for aplicável.
Como exercício, você pode escrever uma função recursiva para imprimir "Eu gosto de codificar" até que ela siga uma determinada condição?
Dica: Podemos seguir o mesmo procedimento de adição que é feito no programa acima.
Conclusão
Então, aqui obtivemos com êxito a execução de funções recursivas, como essas funções são chamadas e alguns exemplos delas. Também aprendemos como uma simples diferença na chamada de uma função pode fazer com que o programa se esgote e crie uma exceção.
Artigos recomendados
Este é um guia para a função recursiva em c #. Aqui discutimos a execução para gerar função recursiva com seus exemplos. Você também pode consultar nossos outros artigos relacionados para saber mais.
- Funções anônimas no Matlab
- Funções de seqüência de caracteres do Tableau
- O que é teste funcional?
- Funções C #
- Introdução à função recursiva em C ++
- Aprenda as 3 maneiras de ler Java User Input