Files
freeCodeCamp/curriculum/challenges/espanol/10-coding-interview-prep/rosetta-code/stern-brocot-sequence.md
2022-09-15 11:30:53 -07:00

2.7 KiB

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
5a23c84252665b21eecc8028 Secuencia de Stern-Brocot 1 302324 stern-brocot-sequence

--description--

Para esta tarea, la secuencia Stern-Brocot debe ser generada por un algoritmo similar al empleado en la generación de la secuencia Fibonacci.

  1. El primer y segundo miembros de la secuencia son ambos uno:
    • 1, 1
  2. Empezar por considerar el segundo miembro de la secuencia
  3. Sume el miembro considerado de la secuencia y su precedente, (1 + 1) = 2, y añádelo al final de la secuencia:
    • 1, 1, 2
  4. Añadir el miembro considerado de la secuencia al final de la secuencia:
    • 1, 1, 2, 1
  5. Considere al siguiente miembro de la serie, (el tercer miembro es 2)
  6. GOTO 3
    • ► Expandiendo otro bucle que obtenemos: Adicionalmente
  7. Suma el miembro considerado de la secuencia y su precedente, (2 + 1) = 3, y añádelo al final de la secuencia:
    • 1, 1, 2, 1, 3
  8. Agrega el miembro considerado de la secuencia al final de la secuencia:
    • 1, 1, 2, 1, 3
  9. Considere al siguiente miembro de la serie, (el cuarto miembro es decir, 1)

--instructions--

Crear una función que devuelva la posición en la secuencia de Stern-Brocot en la que n se encuentra por primera vez, donde la secuencia se genera con el método descrito arriba. Tenga en cuenta que esta secuencia utiliza un índice basado en 1.

--hints--

sternBrocot debe ser una función.

assert(typeof sternBrocot == 'function');

sternBrocot(2) debe devolver un número.

assert(typeof sternBrocot(2) == 'number');

sternBrocot(2) debe devolver 3.

assert.equal(sternBrocot(2), 3);

sternBrocot(3) debe devolver 5.

assert.equal(sternBrocot(3), 5);

sternBrocot(5) debería devolver 11.

assert.equal(sternBrocot(5), 11);

sternBrocot(7) debería devolver 19.

assert.equal(sternBrocot(7), 19);

sternBrocot(10) debería devolver 39.

assert.equal(sternBrocot(10), 39);

--seed--

--seed-contents--

function sternBrocot(num) {

}

--solutions--

function sternBrocot(num) {
  function f(n) {
    return n < 2
      ? n
      : n & 1
      ? f(Math.floor(n / 2)) + f(Math.floor(n / 2 + 1))
      : f(Math.floor(n / 2));
  }

  function gcd(a, b) {
    return a ? (a < b ? gcd(b % a, a) : gcd(a % b, b)) : b;
  }
  var n;
  for (n = 1; f(n) != num; n++);
  return n;
}