Función recursiva en C # - Sintaxis y ejecución de la función recursiva en C #

Tabla de contenido:

Anonim

Introducción a la función recursiva en C #

En la función recursiva en C #, recursión significa denotar el mismo significado que en el idioma inglés, conocido precisamente como repetirse a sí mismo. Entonces, la naturaleza recursiva de una función denota hacer el mismo trabajo repetidamente. Y sí, si el programa no se maneja correctamente, definitivamente lo ejecutaría en un ciclo continuo. Tenemos que asegurarnos de especificar las condiciones adecuadas para ejecutar estas funciones recursivas, de lo contrario, la función se llamaría a sí misma, una y otra vez, lo que llevaría a una ejecución continua del programa. A continuación, veamos cómo podemos crear estas funciones en C #.

Sintaxis de funciones recursivas en C #

La sintaxis aquí es la misma que la sintaxis de la función básica en C #. Echemos un vistazo aquí.

Aquí no hay una sintaxis especial, pero podemos observar que una función se llama a sí misma para proporcionar el resultado de retorno. Y debemos tener mucho cuidado al pasar esos valores de parámetros a esa función recursiva ya que obviamente no queremos un código en ejecución que no se detenga.

En la sintaxis anterior, no hay nada como, tenemos que llamar a la función solo en declaraciones de retorno. Más bien, incluso podemos asignar el valor de retorno de la función recursiva a una variable y devolver esa variable también.

Ejecución de Factorización

Aquí tomemos nuestra declaración de problema predeterminada, Factorización, para generar nuestra función 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);
)
)

Echemos un vistazo al proceso paso a paso.

  1. Primero, hemos creado nuestra propia función parametrizada para tomar un valor de entrada de la función principal, para lo cual queremos calcular el factorial.
  2. Luego, hicimos una condición if para verificar si el número dado es cero. Si el número es cero, entonces estamos devolviendo 1 como nuestro valor predeterminado.
  3. De lo contrario, estamos multiplicando el número presente con la función tomando el número menos 1 como su parámetro.
  4. Entonces, esta multiplicación se repite hasta llegar al número 0. Como por defecto, hemos escrito nuestra salida de retorno para cero como 1, el resultado final se multiplicaría por 1.

Salida:

Ahora, en el código, voy a reemplazar nuestro parámetro de función de num menos 1 a, num. En este caso, la función se llamaría una y otra vez y el proceso se repetiría.

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

Salida:

A través de la salida anterior, podemos ver claramente la excepción de desbordamiento de la pila, donde la función se llama a sí misma repetidamente. Solo la parte resaltada cambia con respecto al primer programa.

De la misma manera, podemos hacer el número como un valor ingresado por el usuario como a continuación:

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

Salida:

¿Qué pasa si damos cero como entrada? Sí, uno sería devuelto.

Salida:

Ahora, ¿qué pasa si damos un número negativo?

Salida:

Esto también me dio una excepción de desbordamiento de pila, ya que nuestra función de recursión factorial está disminuyendo su valor del parámetro en cada ejecución. Entonces, los números negativos estarían reducidos a -6, -7, -8 y así sucesivamente. Esa es la razón por la que vamos a esta excepción.

Como ejercicio, ¿puedes intentar crear una función recursiva para números negativos?

Sugerencia: Podemos tomar una precondición de número menor que cero y agregar uno a nuestro parámetro de función recursiva hasta que llegue el cero.

Ejemplos de función recursiva en C #

Hay algunos buenos ejemplos que se pueden citar con respecto a las funciones recursivas:

Tenemos algunos otros lugares donde podemos usar estas funciones recursivas.

  • Imprima números de un punto inicial y un punto final de forma continua. (Programa a continuación)
  • Agregue números a partir de un punto de inicio dado y pare en el punto final o cuando se alcance una suma particular.
  • Imprima números que se dividen por cualquier número particular en cualquier rango particular.
  • Queremos imprimir cualquiera de los números de líneas o puntos continuos después de escribir una oración y muchos más.

Como puede observar, la función recursiva es similar a la funcionalidad de un bucle, pero donde estamos llamando repetidamente a la misma función.

Veamos cómo podemos escribir una función recursiva al sumar números continuamente hasta que el programa encuentre el segundo número que se da 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;
)
)

Aquí, lo que hicimos es:

  • Hemos tomado dos números num1 y num2 a través de las entradas del usuario
  • Agregar función, agrega los números comenzando desde num1 hasta que obtiene el num2.

Por ejemplo, si tomo num1 = 5 y num2 = 8, entonces la suma de salida que obtenemos es 5 + 6 + 7 + 8, que es 26.

Salida:

¿Y si doy num1 menos que num2?

Salida:

Da algunos como el valor num1 como primero, asignamos el valor de la suma al valor num1 y devuelve la suma si la declaración if no es aplicable.

Como ejercicio, ¿puede escribir una función recursiva para imprimir "Me gusta codificar" hasta que cumpla una determinada condición?

Sugerencia: podemos seguir el mismo procedimiento de adición que se realiza en el programa anterior.

Conclusión

Entonces, aquí hemos obtenido con éxito la ejecución de funciones recursivas, cómo se llaman estas funciones y algunos ejemplos de ellas. También aprendimos cómo una simple diferencia en la llamada de una función puede hacer que el programa se salga de sus límites y crear una excepción.

Artículos recomendados

Esta es una guía de la función recursiva en C #. Aquí discutimos la ejecución para generar funciones recursivas con sus ejemplos. También puede consultar nuestros otros artículos relacionados para obtener más información.

  1. Funciones anónimas en Matlab
  2. Funciones de cadena de Tableau
  3. ¿Qué son las pruebas funcionales?
  4. Funciones de C #
  5. Introducción a la función recursiva en C ++
  6. Aprenda las 3 formas de leer la entrada de usuario de Java