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

Icono de revisar

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
Tipos de soluciones
Herramientas
Tipos de soluciones