FácilAlgoritmos#bucles#modulo

FizzBuzz

Actualizado21 jul 2026

Pista 1

El operador módulo (%) devuelve el resto de una división. `n % 3 === 0` significa "n es múltiplo de 3".

Pista 2

Comprueba primero el caso "múltiplo de 3 y de 5" — si lo dejas para el final, nunca se alcanzará.

Escribe una función que reciba un número n y devuelva un array con los números del 1 al n como cadenas, con tres excepciones:

  • Múltiplos de 3 → "Fizz"
  • Múltiplos de 5 → "Buzz"
  • Múltiplos de 3 y de 5 → "FizzBuzz"

Ejemplos

fizzBuzz(5)  → ["1", "2", "Fizz", "4", "Buzz"]
fizzBuzz(15) → [..., "13", "14", "FizzBuzz"]

Parece trivial — y lo es — pero sigue filtrando candidaturas en entrevistas porque condensa tres fundamentos: bucles, condiciones y el orden en que se evalúan.

Ver solución

La clave está en el orden de las condiciones: “múltiplo de ambos” debe comprobarse primero, porque un múltiplo de 15 también lo es de 3 y de 5.

function fizzBuzz(n: number): string[] {
  const resultado: string[] = [];
  for (let i = 1; i <= n; i++) {
    if (i % 15 === 0) resultado.push('FizzBuzz');
    else if (i % 3 === 0) resultado.push('Fizz');
    else if (i % 5 === 0) resultado.push('Buzz');
    else resultado.push(String(i));
  }
  return resultado;
}

Variante sin duplicar palabras (escala mejor si añaden “múltiplos de 7 → Bazz”):

function fizzBuzz(n: number): string[] {
  return Array.from({ length: n }, (_, k) => {
    const i = k + 1;
    const palabra = (i % 3 === 0 ? 'Fizz' : '') + (i % 5 === 0 ? 'Buzz' : '');
    return palabra || String(i);
  });
}

Complejidad: O(n) en tiempo, O(n) en espacio (el array de salida).

Volver