Sucesión diatómica de Stern / Stern–Brocot
Obtenga cualquier término de la sucesión diatómica de Stern a partir de su índice: s(10) es 3, calculado con pasos enteros que dividen el índice a la mitad, así que incluso los índices grandes salen exactos. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- N
- 10
- Valor Stern
- 3
- Recurrencia
- s(0)=0; s(1)=1; s(2k)=s(k); s(2k+1)=s(k)+s(k+1)
La sucesión diatómica de Stern es una sucesión entera clásica estrechamente ligada al árbol Stern–Brocot de racionales positivos. Se define con dos semillas y una regla según la paridad del índice: s de cero es cero, s de uno es uno; cuando el índice es par e igual a dos k el término vale s de k; cuando es impar e igual a dos k más uno el término vale s de k más s de k más uno. La lista resultante comienza cero, uno, uno, dos, uno, tres, dos, tres, uno, cuatro, tres, cinco, dos, cinco, tres, cuatro, y continúa con la propiedad notable de que términos consecutivos son siempre coprimos.
Qué es la sucesión diatómica de Stern y cómo funciona la recurrencia par/impar
Comience con las semillas s de cero igual a cero y s de uno igual a uno. Para todo índice posterior la regla depende solo de la paridad. Si n es par, escriba n igual a dos k y fije s de n igual a s de k: el mismo valor aparece en la mitad del índice.
Si n es impar, escriba n igual a dos k más uno y fije s de n igual a s de k más s de k más uno. Desenrollar unos pasos produce cero, uno, uno, dos, uno, tres, dos, tres, uno, cuatro, tres, cinco, dos, cinco, tres, cuatro, uno, cinco, cuatro, siete, tres, y así sucesivamente.
Los pares adyacentes son siempre coprimos, todo racional positivo aparece exactamente una vez como cociente consecutivo s de m sobre s de m más uno al recorrer la sucesión, y esa enumeración es exactamente el árbol Stern–Brocot aplanado por anchura. La misma recurrencia se llama a veces sucesión de Calkin–Wilf o Stern–Brocot según la presentación; esta herramienta usa la forma diatómica estándar con s de cero igual a cero.
Como cada paso es suma entera exacta o un puro semicorte de índice, no hay error de redondeo ni dependencia del reloj o de semillas aleatorias. Cuando solo necesite un término, envíe el índice n; la respuesta repite n, el valor de Stern, una cadena breve de fórmula para los casos par e impar, y la descripción completa de las semillas de recurrencia para que evaluadores y estudiantes recomputen a mano o en papel.
Consejos prácticos, límites y búsquedas relacionadas
Al calificar, afirme tanto el campo stern como la cadena formula para que una recurrencia errónea o una confusión con Fibonacci sea fácil de diagnosticar. Páginas hermanas de este kit cubren otras intenciones de sucesiones y figurados como números de Padovan, triangulares, poligonales y sumas de series aritméticas; esta página es específicamente para quien busca una calculadora de la sucesión Stern–Brocot, números diatómicos de Stern o el n-ésimo término de la sucesión de Stern.
No trate el entero solo como caja negra: combínelo con las reglas par e impar documentadas al enseñar para no confundir desplazamientos alternativos de OEIS con la convención s de cero igual a cero usada aquí. Tope n en mil millones para que cada petición quede acotada; si necesita índices mayores, pase a herramientas de enteros grandes fuera de esta ruta gratuita de parse.
Qué puede hacer con ella
Validadores para concursos de programación y entrevistas
Afirme soluciones candidatas a problemas de la sucesión de Stern o del árbol Stern–Brocot sin reimplementar la recurrencia en cada arnés de lenguaje.
Demos docentes de pares consecutivos coprimos y enumeración racional
Proyecte n, stern, formula y recurrence en clase para que el alumnado vea las semillas, las reglas par e impar y cómo los cocientes consecutivos cubren los racionales positivos.
Preguntas frecuentes
¿Qué es la sucesión diatómica de Stern?
La sucesión definida por s(0)=0, s(1)=1, s(2k)=s(k) y s(2k+1)=s(k)+s(k+1). Comienza 0, 1, 1, 2, 1, 3, 2, 3, 1, 4, 3, 5, … y está ligada al árbol Stern–Brocot.
¿Por qué se llama Stern–Brocot?
Recorrer pares consecutivos s(n)/s(n+1) enumera cada racional positivo exactamente una vez —la misma estructura que el árbol Stern–Brocot de fracciones. La sucesión misma es la diatómica de Stern.
¿Qué son s(0) y s(1)?
Bajo la convención usada aquí, s(0)=0 y s(1)=1. Todo término posterior sigue las reglas de índice par e impar. La respuesta siempre repite la recurrencia para que las semillas queden explícitas.
¿Es gratuita la calculadora de la sucesión Stern–Brocot?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Cómo se calcula s(10) a mano?
Divida el índice entre dos mientras sea par y sepárelo cuando sea impar. Como 10 es par, s(10) es igual a s(5); 5 es impar, así que s(5) es s(2) más s(3), es decir, 1 más 2, que da 3.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/math/stern-brocot \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":10}'const res = await fetch("https://api.kit.forhosting.com/math/stern-brocot", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/stern-brocot",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/stern-brocot", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/stern-brocot", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"n": 10
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.stern_brocot",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_n | 1000000000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Esta capacidad devuelve el valor exacto n-ésimo de Stern como objeto JSON determinista —sin paquete de álgebra computacional, sin aproximación en coma flotante, sin llamada de red— de modo que correctores de tareas, validadores de concursos y demos docentes ven el mismo resultado entero puro en el ejecutor gratuito del navegador y en la ruta API prepago.
Qué es la sucesión diatómica de Stern y cómo funciona la recurrencia par/impar
Los índices negativos no forman parte de esta sucesión clásica no negativa: el manejador los rechaza con invalid_input en lugar de inventar una extensión con signo.
Cómo llamar a la API y qué devuelve
Una respuesta exitosa incluye n como eco, stern igual a s de n, formula igual a las reglas compactas par e impar, y recurrence documentando las semillas junto con s de dos k igual a s de k y s de dos k más uno igual a s de k más s de k más uno. Úselo en pipelines de tareas, validadores de concursos de programación, sandboxes de preparación de entrevistas, trabajos de enriquecimiento de cuadernos o cualquier flujo que necesite un término de Stern reproducible sin instalar paquetes de sucesiones especializados en cada máquina. Para índices de multiprecisión más allá de ese límite, use una pila de enteros grandes dedicada en lugar de esta capacidad ligera de parse. Envíe un cuerpo JSON con un único campo obligatorio n: un número entero no negativo como máximo mil millones, el índice del término de Stern deseado. Se aceptan los alias index y order con el mismo significado. La validación fallida —n ausente, no entero, fracción, valor por encima del límite publicado de mil millones, o cualquier número negativo— devuelve invalid_input y nunca se cobra. El precio es un $0.002 fijo por petición exitosa con ítem unitario y precio marginal nulo. Mantenga n dentro del tope publicado; el recorrido par/impar es logarítmico en n, así que una sola petición se mantiene barata en el Worker y en el navegador.
Consejos prácticos, límites y búsquedas relacionadas
Prefiera ejemplos de aula emparejados: n igual a cero da cero; n igual a uno da uno; n igual a diez da tres; n igual a quince da cuatro; y un n negativo demuestra el rechazo estricto con invalid_input. Como términos consecutivos son siempre coprimos, los estudiantes pueden comprobar el mcd de s de n y s de n más uno a mano para n pequeños y coincidir con la API. Las tareas fallidas que devuelven invalid_input no consumen saldo prepago, lo que mantiene baratos los scripts exploratorios cuando el usuario introduce valores erróneos al aprender el contrato.
Casos de integración
Tareas: calcular el n-ésimo término diatómico de Stern
Dé a los estudiantes un índice y contraste su valor de Stern calculado a mano con un resultado determinista de la API o del navegador gratuito con la misma recurrencia par/impar y semillas.
Preguntas técnicas
¿Qué entradas se rechazan?
Falta de n, no enteros, valores por encima de 1_000_000_000 y cualquier número negativo devuelven invalid_input. Esos fallos no se cobran.