Ejercicio 03 — Escribe factorial(n) iterativo
Dificultad: amarillo · Módulo 04 (Funciones)
Enunciado
Escribe factorial(n) iterativo. Pide n al usuario e imprime n!.
Cómo se resuelve
Calcular el factorial de forma iterativa mezcla dos ideas: un acumulador que arrastra el producto y un caso base que se trata aparte.
if n == 0: return 1— por definición matemática0! = 1. Lo resolvemos primero con unreturntemprano para que el bucle no tenga que preocuparse de ese caso raro.resultado = 1— el acumulador arranca en 1, no en 0. Como vamos a multiplicar, empezar en 0 dejaría todo en 0; 1 es el elemento neutro del producto.for i in range(2, n + 1):— recorre de 2 hastaninclusive.rangeexcluye el extremo derecho, por eso escribimosn + 1. Empezamos en 2 porque multiplicar por 1 no cambia nada.resultado *= i— en cada vuelta multiplica el acumulador por eliactual; al salir del bucle,resultadocontiene2*3*...*n. Ese valor lo entrega elreturnfinal.
Trampa habitual: en C tendrías que vigilar el desbordamiento (un int de 32 bits se pasa ya en 13!); en Python los enteros crecen sin límite fijo, así que factorial(100) funciona tal cual. Otro fallo típico: iniciar range en 1 o el acumulador en 0, o olvidar el + 1 y quedarte corto un factor.
Para practicar — cópialo y complétalo
Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.
# Curso de Python — Modulo 04: Funciones
# Ejercicio 03 — PRACTICA (rellena los TODO)
# Enunciado: Escribe factorial(n) iterativo. Pide n al usuario e imprime n!.
# Dificultad: amarillo
# Ejecutar: python3 ej03_practica.py
def factorial(n):
"""Devuelve n! de forma iterativa. n debe ser un entero >= 0."""
# TODO: trata el caso base: si n == 0, devuelve 1 directamente
# TODO: inicializa una variable resultado a 1
# TODO: recorre range(2, n + 1) con un for y multiplica resultado por cada i
# TODO: devuelve resultado
pass
# TODO: pide n al usuario con int(input(...))
n = None # reemplaza None
# TODO: imprime con f-string: "<n>! = <factorial(n)>"Solución — cópiala y ejecútala
# Curso de Python — Modulo 04: Funciones
# Ejercicio 03 — MODELO (resuelto)
# Enunciado: Escribe factorial(n) iterativo. Pide n al usuario e imprime n!.
# Dificultad: amarillo
# Ejecutar: python3 ej03_modelo.py
def factorial(n):
"""Devuelve n! de forma iterativa. n debe ser un entero >= 0."""
if n == 0:
return 1
resultado = 1
for i in range(2, n + 1):
resultado *= i
return resultado
n = int(input("Introduce un entero >= 0: "))
print(f"{n}! = {factorial(n)}")Cómo usarlo
Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.