La recursividad es un mecanismo cuando una función se llama a sí misma una y otra vez hasta que se cumple la condición requerida. Cuando la declaración de llamada de función se escribe dentro de la misma función, dicha función se denomina función recursiva.
El argumento pasado a una función se recupera de la array predeterminada @_ mientras que se puede acceder a cada valor mediante $_[0], $_[1], etc.
Ejemplo 1: El siguiente ejemplo encuentra el factorial de un número.
Factorial of any number n is (n)*(n-1)*(n-2)*....*1. e.g.: 4! = 4*3*2*1 = 24 3! = 3*2*1 = 6 2! = 2*1 = 2 1! = 1 0! = 0
Perl
#!/usr/bin/perl # Perl Program to calculate Factorial sub fact { # Retrieving the first argument # passed with function calling my $x = $_[0]; # checking if that value is 0 or 1 if ($x == 0 || $x == 1) { return 1; } # Recursively calling function with the next value # which is one less than current one else { return $x * fact($x - 1); } } # Driver Code $a = 5; # Function call and printing result after return print "Factorial of a number $a is ", fact($a);
Así es como funciona el programa:
Paso 1: cuando el valor del escalar a es 0 o 1, la función devolverá 1 porque el valor de ambos es 0. ¡y 1! es 1.
Paso 2: cuando el valor del escalar a es 2, fac(x-1) hace una llamada a fac(1) y esta función devuelve 1.
Entonces, es 2*factorial(1) = 2*1 = 2. Entonces, devolverá 2.
Paso 3: de manera similar, cuando se pasan valores más altos a la función en cada argumento de llamada, el valor disminuye en 1 y se calcula hasta que el valor llega a 1.
Ejemplo 2: El siguiente ejemplo calcula la serie de Fibonacci hasta un número dado.
Perl
#!/usr/bin/perl # Perl Program to print Fibonacci series sub fib { # Retrieving values from the parameter my $x = shift; my $y = shift; # Number till which the series is to be printed my $n = shift; # Check for the end value if ($y > $n) { return 1; } # Printing the number print " $y"; # Recursive Function Call fib($y, $x + $y, $n); } # Driver Code # Number till which series is to be printed $a = 5; # First two elements of the series $c = 0; $d = 1; print "$c"; # Function call with required parameters fib($c, $d, $a);
Así es como funciona el programa:
Paso 1- Se llama a la función fib() con 3 valores iniciales de parámetros que serán 0 y 1 mientras que $n es un número hasta el cual se imprimirá una serie
Paso 2- Estos valores se transfieren en el forma de una array cuyos valores se recuperan con el uso de shift.
Paso 3: en cada llamada, se recuperan los dos primeros valores mediante shift y estos valores se almacenan en escalares x e y. Ahora estos dos valores se suman para obtener el siguiente valor de la serie. Este paso continúa hasta que el valor alcanza el valor final proporcionado por el usuario
Publicación traducida automáticamente
Artículo escrito por rupanisweety y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA