Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Veamos paso a paso, lo que pasa cuando se ejecuta esta función, por ejemplo: factorial(4):
1a Instancia
n=4
n > 1
salida ← 4 * factorial(3) (Guarda el valor de n = 4)
2a Instancia
n > 1
salida ← 3*factorial(2) (Guarda el valor de n = 3)
3a Instancia
n > 1
salida ← 2*factorial(1) (Guarda el valor de n = 2)
4a Instancia
n == 1 → retorna 1
3a Instancia
(recupera n=2 de la pila) retorna 1*2=2
2a instancia
(recupera n=3 de la pila) retorna 2*3=6
1a instancia
(recupera n=4 de la pila) retorna 6*4=24
Valor de retorno → 24
Aunque la función factorial es un buen ejemplo para demostrar cómo funciona una función
recursiva, la recursividad no es un buen modo de resolver esta función, que sería más sencilla
y rápida con un simple bucle for.
La recursividad consume muchos recursos de memoria y tiempo de ejecución, y se debe
aplicar a funciones que realmente le saquen partido.
Veamos otro ejemplo: visualizar las permutaciones de n elementos.
Las permutaciones de un conjunto son las diferentes maneras de colocar sus elementos,
usando todos ellos y sin repetir ninguno. Por ejemplo para A, B, C, tenemos: ABC, ACB, BAC,
BCA, CAB, CBA.
#include <iostream>
using namespace std;
/* Prototipo de función */
void Permutaciones(char *, int l=0);
Permutaciones(palabra);
cin.get();
return 0;
}
Esta es la definición recursiva del factorial, ni más ni menos. Esto se podría programar así:
// Ejemplo_05_10a.cs
// Funciones recursivas: factorial
// Introducción a C#, por Nacho Cabanes
using System;
public class Ejemplo_05_10a
{
public static long Factorial(int n)
{
if (n==1) // Aseguramos que termine (caso base)
return 1;
return n * Factorial(n-1); // Si no es 1, sigue la recursión
}
public static void Main()
{
int num;
Console.WriteLine("Introduzca un número entero: ");
num = Convert.ToInt32(System.Console.ReadLine());
Console.WriteLine("Su factorial es: {0}", Factorial(num));
}
}
¿Qué utilidad tiene esto? Más de la que parece: muchos problemas complicados se pueden
expresar a partir de otro más sencillo. En muchos de esos casos, ese problema se podrá
expresar de forma recursiva. Los ejercicios propuestos te ayudarán a descubrir otros ejemplos
de situaciones en las que se puede aplicar la recursividad.