El sabor de la recursividad
La recursividad es una palabra grande, miedo que se escucha a menudo acerca de la programación, especialmente el tipo de la frustración de programación que se enseña en la universidad. Aunque es un concepto fácil de describir, es realmente una mente-soplador cuando se trata de entender cómo funciona la recursividad. La mayoría de la gente simplemente lo aceptan y siguen adelante. ¡Aqui no!
La recursividad es básicamente el proceso de una función que se hace llamar. Por ejemplo:
void func (int x) {func (x) -}
En este fragmento de código, verá un terrible ejemplo de una función recursiva, pero es orientativa aquí: El func () función llama a sí mismo. Esa es la recursividad. Ahora lo que sucede en este ejemplo es, básicamente, un bucle sin fin, y, gracias a una otra cosa-o-técnica, llamada pila pointer, el equipo finalmente se estrella. Pero es sólo una ilustración.
Para recursividad funcione, la función debe tener una condición de rescate, al igual que un bucle. Por lo tanto, o bien el valor que se pasa a la función recursiva o su valor de retorno debe ser probado. Aquí hay un mejor ejemplo de una función recursiva:
void recursividad (int x) {if (x == 0) return-else {puts ("! Boop") - recursividad (- x) -}}
los recursividad () función acepta el valor X. Si X es igual a cero, las fianzas de función. De lo contrario, la función se llama de nuevo, pero el valor de X está reducido. Se utiliza el operador de prefijo decremento de modo que el valor de X está reducido antes de se realiza la llamada.
La muestra recursividad () función básicamente escupe el texto Boop! un número determinado de veces. Así que si recursividad () se llama con el valor 10, se ve que el texto aparece diez veces.
La parte loca sobre la recursividad es que la función sigue llamándose, envolviéndose más y más fuerte, como si fuera en un espiral. En el ejemplo anterior, la condición x == 1 finalmente se desenrolla ese lío revirado, tirando cada vez más hacia atrás hasta que la función se lleva a cabo.
El siguiente código muestra un completo programa utilizando la muestra recursividad () función.
#include void recursividad (int x) -INT main () {recursividad (10) -Retorno (0) -} void recursividad (int x) {if (x == 0) return-else {puts ("! Boop") -recursion (- x) -}}
Una manifestación común de la recursividad es una función factorial. los factorial es el resultado de multiplicar un valor por cada uno de sus números enteros positivos. Por ejemplo:
4! = 4 x 3 x 2 x 1
El resultado de esta factorial es 24. El ordenador también puede realizar este cálculo, ya sea por aplicación de un bucle o la creación de una función recursiva. He aquí una función de este tipo:
int factorial (int x) {if (x == 1) return (x) -elsereturn (x * factorial (x-1)) -}
Como con las otras funciones recursivas, el factorial () función contiene una condición de salida: x == 1. De lo contrario, la función se llama de nuevo con uno menos que el valor actual de X. Pero toda la acción se lleva a cabo con los valores de retorno.