Hola y bienvenidos.
Vamos a ver a continuación un ejemplo para poner en práctica el concepto de funciones recursivas en
el lenguaje C Están listos?
Vamos.
Bien, vamos a definir una función.
Estamos partiendo de un archivo completamente en blanco.
Vamos a declarar.
Una función y esta función a su vez, se va a mandar a llamar a sí misma.
Así que para ello vamos a hacer lo siguiente Definimos nuestra función es de tipo void, no va a regresar
nada y esta función simplemente se va a encargar de mandar a imprimir los valores del cinco y posteriormente
irlos reduciendo hasta llegar a la unidad.
Así que va a imprimir los valores de 5432 y finalmente el valor de uno.
Esto para que podamos observar a detalle cómo trabajan las funciones recursivas.
Así que nosotros vamos a proporcionar un valor inicial y lo vamos a ir reduciendo en la unidad hasta
llegar al valor de uno.
El caso base va a ser precisamente el valor de uno.
Así que para ello definimos nuestra función recursiva.
Vamos a definir un parámetro.
En este caso, el parámetro simplemente va a ser la variable de número y entonces, dentro de nuestra
función, vamos a empezar a hacer lo siguiente.
Vamos a comprobar en primer lugar si es el caso base.
Si es el caso base significa que ya hemos llegado al valor de uno.
Así que preguntamos si la variable de número es igual a uno, entonces mandamos a imprimir el número.
Simplemente es un valor numérico, pero al final agregamos un salto de línea, así que imprimimos no
esta variable de número.
En este caso tendría que imprimir obviamente el valor de uno, ya que estamos comprobando que la variable
de número es precisamente el valor de uno.
Ahora, si no es el caso base, entonces agregamos la siguiente condición y aquí es donde se cumple
la otra regla de las funciones recursivas es una función que se tiene que mandar a llamar a sí misma.
Así que este sería el caso recursivo.
Mandamos a llamar de nueva cuenta nuestra función.
La función recursiva.
Pero en lugar de proporcionar el mismo argumento, el valor de número.
Si pasamos este valor, entonces no nos estamos acercando al caso base.
Por lo tanto, según el número que se proporcione, vamos a reducirlo, en este caso en la unidad.
Así que cada vez que se van a llamar, la función recursiva se va a reducir en uno y entonces, de manera
eventual, siempre y cuando proporcionemos un valor positivo, se va a ir reduciendo en uno hasta llegar
al valor de uno, que sería el caso base.
Bien, entonces, una vez que estamos llamando a esta función recursiva para que podamos imprimir los
valores de 54321, entonces en primer lugar vamos a mandar a imprimir el número que estamos recibiendo.
En este caso, el valor positivo que se ha recibido es un valor numérico, así que lo mandamos a imprimir,
pero también para que no se imprima en la misma línea.
Entonces vamos a agregar un salto de línea cada que mandamos a imprimir este valor.
Y entonces, si por ejemplo, recibimos de manera inicial el valor de cinco, entonces primero va a
imprimir el valor de cinco y posteriormente, cada vez que mandamos a llamar de nueva cuenta, esta
función se va a ir reduciendo en uno, ya que estamos observando que se vuelva a llamar esta función.
Y entonces para la siguiente impresión, siempre y cuando no sea el caso base, se va a imprimir ahora
el valor de cuatro.
Posteriormente el valor de tres.
Y así hasta llegar al caso base.
Bien, prácticamente esto es todo nuestro código de la llamada recursiva para mandar a imprimir los
valores, por ejemplo del cinco hasta el uno.
Así que estamos mandando a imprimir de manera descendente el valor que proporcionemos, por ejemplo
el valor cinco hasta el valor de uno.
Así que ahora, dentro de nuestro método principal, vamos a imprimir del cinco al uno, pero de manera
recursiva, así que definimos nuestro valor.
La variable con el valor máximo tiene el valor de cinco y posteriormente mandamos a llamar nuestra función
recursiva.
Ya lo hemos definido con todas las características.
Precisamente de las funciones recursivas pasamos la variable de valor inicia con el valor de cinco y
entonces se va a ir reduciendo cada vez que mandamos a llamar nuestra función recursiva.
Bien, vamos a ejecutar y entonces podemos saber que tenemos los valores de 5432 y finalmente el caso
base, el valor de uno.
Y si quisiéramos imprimir de manera ascendente nuestros números, bastaría con modificar esta línea.
Si modificamos esta línea que en primer lugar se manda llamar nuestra función y posteriormente que se
impriman los números, entonces el primer número que se imprime es el caso base, ya que antes de que
termine cualquiera de las llamadas recursivas, primero llegamos al caso base, el valor de uno y posteriormente
con cada llamada recursiva que quedara pendiente.
Entonces se empiezan a imprimir los números restantes, por ejemplo el valor de 234 y cinco hasta llegar
al último valor, que sería el valor máximo, el valor de cinco.
Vamos a comprobar y entonces podemos observar que ahora estamos imprimiendo los valores de manera ascendente.
Primero se imprime el caso base, ya que es la primera impresión que se va a realizar y posteriormente
se van imprimiendo todas las llamadas que quedaron pendientes con los valores, por ejemplo de 234 y
cinco.
Ese es el último valor.
Y entonces hasta aquí quedan las llamadas recursivas pendientes.
Obviamente esto lo vamos a ejecutar paso a paso para que todo esto quede completamente claro, pero
este es el concepto básico de las funciones recursivas.
Vamos a detener hasta aquí y en el siguiente vídeo vamos a analizar a detalle la ejecución de este ejercicio.
Así que continuamos.
Saludos.