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

Para comenzar con la función recursiva en C ++, ya conocemos la idea básica detrás de las funciones de C ++ que incluye la definición de funciones para llamar también a otras funciones. Y este artículo cubre el concepto detrás de la definición recursiva, un concepto de herramienta de juego en matemáticas y lógica de programación. Un ejemplo familiar incluye el factorial de un número, la suma de 'n' números naturales, etc. Una función que llama por sí misma se conoce como función recursiva. Son solo una función que se invoca repetidamente. Recursion tiene una herramienta para resolver problemas, donde divide los problemas más grandes en tareas simples y trabaja individualmente para seguir una secuencia individual.

Los conceptos de estructuras de datos como búsqueda, clasificación, recorrido de un árbol hacen uso de la función recursiva para sus soluciones. Esta técnica de programación facilita el código. Tanto la iteración como la recursión hacen el mismo proceso que una repetición del código, pero la diferencia en la recursión es que ejecutan una parte específica con la función base en sí. En este artículo, discutiremos la importancia de la recursividad y su proceso de trabajo con un ejemplo en detalle.

Sintaxis de la función recursiva en C ++

La sintaxis general de la función recursiva en c ++ se da como:

return type function name((arguments))
(
Body of the statements;
function name ((actual arguments)) // recursive function
)

¿Cómo funciona la función recursiva en C ++?

La recursión realiza la repetición en las llamadas a funciones y detiene la ejecución cuando el caso base se vuelve verdadero. Se debe definir una condición de caso base en la función recursiva para evitar el mensaje de error de desbordamiento de pila. Si no se define un caso base, conduce a una recursión infinita. Cuando se llama a una función, las empuja a una pila cada vez para reservar los recursos para cada repetición de llamadas. Da lo mejor en el recorrido del árbol. Hay dos tipos diferentes de recursión: recursividad directa e indirecta.

Recursivo directo: ilustración

int fibn(n)
(
fib(n);
)
void main ()
(
fib(n);
)

El formato anterior es la llamada recursiva directa donde llama inmediatamente / llama por sí mismo. Considere un segundo tipo llamado recursión indirecta que involucra otra llamada a la función. Se puede ver en la siguiente ilustración:

Recursiva indirecta: ilustración

void f(int n) (
f1();
return;
)
void f2( int n) (
f();
return;
)
void f1() (
f2();
return;
)

Ejemplos de función recursiva en C ++

En el siguiente programa, puede ver la ejecución del programa que he proporcionado con la condición base predeterminada. A veces, usar la condición if-else en la recursión ayuda a prevenir la recursión infinita. El proceso del código se realiza con la solución parcial en el intermedio y estos se combinan en una solución final en una recursión de cola.

Ejemplo 1

Aquí hay un ejemplo simple de una serie de un número de Fibonacci. El siguiente programa incluye una llamada a la función recursiva definida como fib (int n) que toma la entrada del usuario y la almacena en 'n'. El siguiente paso incluye tomar el bucle for para generar el término que se pasa a la función fib () y devuelve la serie de Fibonacci. El caso base se establece con la instrucción if marcando el número = 1 o 2 para imprimir los dos primeros valores. finalmente, esta función recursiva continúa con el ciclo para imprimir la serie 1, 1, 2.

Código:

#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)
#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)
#include
using namespace std;
int fib_r (int s)
(
if(s==1||s==2)
return 1;
else
return (fib_r(s-1) +fib_r(s-2)); // fib(n-1) + fib(n-2) for adding successive terms
)
int main ()
(
int k, n;
cout<<"Enter no.of n terms: ";
cin>>n;
cout<<" calculated fibonacci numbers are"< for (k=1; k<=n; k++)
cout< return 0;
)

Salida:

Ejemplo # 2

Verificando el número de palíndromo usando una función recursiva.

Código:

#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)
#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)
#include
using namespace std;
int palim(int a, int t)
(
if (a == 0)
return t;
t = (t * 10) + (a % 10);
return palim(a / 10, t);
)
int main()
(
int n;
cout<>n;
int result = palim(n, 0);
if (result == n)
cout << "Number "< else
cout << "Number "< return 0;
)

Salida:

Ejemplo # 3

Programa con un generador de números aleatorios.

Código:

#include
#include
#include
#include
using namespace std;
int rand1(int n);
int main () (
int n, j;
int r;
srand(time (NULL));
cout << "Enter number of dice: ";
cin >> n;
for (j = 1; j <= n; j++) (
r = rand1(5) + 1;
cout << r << " ";
)
system("PAUSE");
return 0;
)
int rand1(int n) (
return rand () % n;
)

El programa anterior ilustra un generador de números aleatorios cuando un dado se lanza al azar. Se realiza llamando a una función rand1 (int n) y genera números de 0 a n-1. y establecer el valor de inicialización con nulo (sin dirección). Por ejemplo, si ingresamos como 4 arroja una posibilidad de dados como 5, 4, 1, 2.

Salida:

También hay algunos conceptos como la búsqueda lineal, el divisor común y el factorial más importante de un número dado que utiliza la implementación recursiva.

Pros de recursión

  • El código proporcionado por ellos es limpio y compacto al simplificar el programa complejo más grande. Utiliza menos variables en el código del programa.
  • Código complejo y anidado para bucles se evitan aquí.
  • Alguna parte del código requiere un retroceso que se resuelve de forma recursiva.

Contras de recursión

  • Toma más asignación de memoria debido a la operación de pila de todas las llamadas a funciones.
  • A veces funciona más lento mientras se ejecuta el proceso de iteración. Por lo tanto, la eficiencia es menor.
  • Es difícil para los principiantes comprender el funcionamiento, ya que a veces el código se profundiza. si conduce a la falta de espacio y provoca, en última instancia, bloqueos del programa.

Conclusión

Con esto, hemos discutido cómo funcionan las funciones de c ++ y las hemos definido de forma recursiva. Y, hemos revisado la correspondencia y sus pros y contras de la función recursiva en el mundo de la programación. Luego continuamos mostrando cómo se puede implementar en C ++ usando una definición de función recursiva. Además, concluimos que la recursividad ayuda en C ++ a resolver problemas en conceptos de estructura de datos como los recorridos, la clasificación y la búsqueda, y puede usarse de manera efectiva donde sea necesario.

Artículos recomendados

Esta es una guía de la función recursiva en C ++. Aquí discutimos cómo funciona la función recursiva en C ++, sintaxis junto con diferentes ejemplos e implementación de código. También puede consultar los siguientes artículos para obtener más información:

  1. ¿Qué son las funciones de matriz de C ++?
  2. Descripción general de las funciones de cadena de C ++
  3. Mejor compilador de C ++ (ejemplos)
  4. Introducción a los comandos de C ++
  5. Serie Fibonacci en Java
  6. Generador de números aleatorios en Matlab
  7. Generador de números aleatorios en C #
  8. Palindrome en C ++
  9. Generador de números aleatorios en JavaScript
  10. Las 11 características y ventajas principales de C ++
  11. Aprenda los tipos de funciones de matriz en PHP