Una función que se llama a sí misma (Función Recursiva): n!
De Ejercicios
Contenido |
Enunciado
Este programa calcula el factorial de un número entero n utilizando la siguiente fórmula recursiva:
n! = n * (n-1)!
teniendo en cuenta que: 1! = 1. Guarda el programa en el disco con el nombre factor2.c.
Soluciones
Programa en C por Angel
Solución comentada al Ejercicio:
/* fichero factor2.c */ #include <stdio.h> void main(void) { int n; double factor(int); printf("Teclea un numero entero positivo: "); scanf("%d", &n); printf("\nEl factorial de %d es %lf\n", n, factor(n)); } double factor(int n) { if(n<=1) return 1.0; return (n*factor(n-1)); }
Comentario
Las funciones recursivas se llaman a sí mismas, y es muy importante que este proceso tenga un final. Para ello es fundamental que esté presente el caso de terminación, que en esta función es el caso n<=1. Para este valor, la función devuelve valor sin llamarse a sí misma. Observa que el valor de retorno de la función factorial es double, pues esta función crece muy rápidamente y por encima de 20 ya no se puede representar con variables enteras, ni siquiera long.
Programa en Matlab
Este ejercicio no está revisado y puede contener errores.
Cuando el ejercicio esté corregido, no aparecerá este mensaje.
%Programa: Este programa calcula el factorial de un número entero n utilizando la siguiente fórmula recursiva. %Entradas:Un número entero. %Salidas:El factorial del número. %Variables:n,fact:ENTERO. n=input('Introduzca un número:'); fact=factorial(n); disp(fact); %Programa:módulo que calcula el factorial de un entero. %Entradas:grado del factorial. %Salidas:El factorial. %Variables:n,RES:ENTERO. %Lo primero que omitimos son las opciones en las cuales el grado del factorial es de "0" o "1". function res=factorial(n) if n==0||n==1, res=1; else res=n*factorial(n-1); end end