Sequenza Q di Hofstadter
Nella sequenza Q di Hofstadter il 10° termine vale 6 e il 20° vale 12. Ogni nuovo termine guarda indietro a distanze decise dai precedenti, perciò la crescita è irregolare; qui ottiene qualsiasi termine fino all’indice centomila. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- N
- 10
- Q
- 6
- Ricorrenza
- Q(1)=Q(2)=1; Q(n)=Q(n-Q(n-1))+Q(n-Q(n-2)) for n>2
La sequenza Q di Hofstadter è una celebre ricorrenza meta-Fibonacci da Gödel, Escher, Bach: ogni termine consulta termini precedenti usando altri termini come scostamenti. Con semi Q di uno e Q di due uguali a uno, la regola per ogni indice maggiore è Q di n uguale a Q di n meno Q di n meno uno, più Q di n meno Q di n meno due. La successione inizia con uno, uno, due, tre, tre, quattro, cinque, cinque, sei, sei, e cresce in modo irregolare vicino a n su due in media.
Cos'è la sequenza Q di Hofstadter e come funziona la ricorrenza
Douglas Hofstadter ha introdotto la sequenza Q come una cugina caotica di Fibonacci in cui gli argomenti delle chiamate ricorsive dipendono da valori già calcolati anziché da ritardi fissi. I semi classici sono Q di uno uguale a uno e Q di due uguale a uno. Per ogni intero n maggiore di due, la definizione è Q di n uguale a Q di n meno Q di n meno uno, più Q di n meno Q di n meno due.
Svolgendo i primi passi si ottengono due, tre, tre, quattro, cinque, cinque, sei, sei, sei, otto, otto, otto, dieci, e così via. A differenza di Fibonacci, che somma sempre i due predecessori immediati, Q usa quei predecessori come scostamenti nella sequenza stessa, così la crescita non è monotona in una forma chiusa semplice e i termini oscillano intorno a una tendenza lineare. La sequenza è catalogata come OEIS A005185 con l'indicizzazione basata su uno usata qui.
Consigli pratici, limiti e dove si colloca la sequenza Q
Gli studenti incontrano la sequenza Q di Hofstadter studiando definizioni ricorsive che non sono ricorrenze lineari a coefficienti costanti, confrontando famiglie meta-Fibonacci ed esplorando come una semplice regola autoreferenziale possa produrre un comportamento locale irregolare restando ben definita per ogni intero positivo. I docenti possono generare chiavi di risposta per schede che chiedono Q di un dato n senza fidarsi di calcolatrici opache che nascondono i semi.
Gli sviluppatori usano lo stesso contratto per validare dati di esempio di librerie di teoria dei numeri, avviare test di proprietà o precalcolare termini attesi prima di una dimostrazione. La pratica per i concorsi spesso necessita di una fonte rapida offline di valori Q per verificare soluzioni senza scaricare tabelle OEIS sotto pressione di tempo.
Non confonda il Q di uno basato su uno uguale a uno con scostamenti di tabella basati su zero di alcuni esempi di codice: controlli sempre i semi del campo recurrence prima di valutare rispetto a un'altra convenzione.
Casi d'uso
Controlli di Q(n) per compiti e concorsi
Calcoli la Q di Hofstadter di n per schede di esercizi e validatori di concorsi senza lunghe tabelle di ricorrenza manuali né script improvvisati.
Insegnamento delle ricorrenze meta-Fibonacci
Mostri agli studenti come una regola di scostamento autoreferenziale differisca da Fibonacci mentre cambiano n dal vivo nel browser senza costo.
Domande frequenti
Quanto costa il calcolatore della sequenza Q di Hofstadter?
È gratis nel Suo browser in questa pagina.
Cosa succede se n è inferiore a 1?
La sequenza Q di Hofstadter è definita qui solo per interi positivi n ≥ 1.
Come viene calcolato Q(n)?
I semi sono Q(1)=Q(2)=1. Per ogni k da 3 a n il motore imposta Q(k)=Q(k−Q(k−1))+Q(k−Q(k−2)) con un array intero bottom-up. Lo stesso n produce sempre lo stesso q.
Quali sono alcuni valori noti?
Q(1)=1, Q(2)=1, Q(3)=2, Q(4)=3, Q(5)=3, Q(6)=4, Q(10)=6, Q(20)=12. La successione è OEIS A005185 con questa indicizzazione basata su 1.
In che cosa la sequenza Q differisce da Fibonacci?
Fibonacci somma i due termini precedenti. La sequenza Q usa quei due termini come distanze per guardare indietro e somma i termini che trova lì. Per questo cresce in modo irregolare, in media vicino a n/2.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/numth/hofstadter-q \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":10}'const res = await fetch("https://api.kit.forhosting.com/numth/hofstadter-q", {
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/numth/hofstadter-q",
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/numth/hofstadter-q", 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/numth/hofstadter-q", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"n": 10
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.hofstadter_q",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Questa capacità restituisce il valore Q esatto dell'n-esimo termine come JSON deterministico—senza solver simbolico, senza approssimazione in virgola mobile, senza chiamata di rete—così correttori di compiti, confronti OEIS, validatori di concorsi e dimostrazioni didattiche vedono lo stesso intero puro nell'esecutore gratuito del browser e sul percorso API prepagato a $0.002 per richiesta riuscita.
Cos'è la sequenza Q di Hofstadter e come funziona la ricorrenza
Indici negativi e zero restano fuori da questa definizione classica: il gestore rifiuta qualsiasi n inferiore a uno con invalid_input anziché inventare un'estensione con segno. Quando Le serve solo un termine, invii l'indice n; la risposta ripete n, il valore q uguale a Q di n, una breve stringa di formula e un riepilogo della ricorrenza che documenta i semi e la regola affinché valutatori e studenti possano ricalcolare a mano casi piccoli e confrontare l'API riga per riga senza ambiguità sulla convenzione di indicizzazione.
Come chiamare l'API e cosa contiene la risposta
Una risposta riuscita include n in eco, q uguale a Q di n, formula con la stringa Q di n uguale a Q di n meno Q di n meno uno più Q di n meno Q di n meno due, e recurrence che documenta Q di uno uguale a Q di due uguale a uno e la regola per n maggiore di due. Preferisca esempi di classe accoppiati come n uguale a uno che dà uno, n uguale a dieci che dà sei, n uguale a venti che dà dodici, e un n zero o negativo che mostra il rifiuto rigido. Invii un corpo JSON con un unico campo obbligatorio n: un intero positivo almeno uno e al massimo centomila, l'indice basato su uno del termine Q desiderato. Gli alias index, order e term sono accettati con lo stesso significato così moduli, fogli di calcolo e query string riutilizzano un solo contratto. Una validazione fallita—n assente, non intero, frazione, notazione scientifica, valore oltre il limite pubblicato o qualsiasi n inferiore a uno—restituisce invalid_input e non viene mai addebitata. Il prezzo è un fisso di $0.002 per richiesta riuscita con unità item.
Consigli pratici, limiti e dove si colloca la sequenza Q
In questa pagina il lavoro viene eseguito interamente nel Suo browser; tramite l'API ogni consultazione riuscita costa $0.002, la validazione fallita non viene addebitata e nulla viene memorizzato dopo la risposta. Limiti n a centomila per contenere memoria e tempo del Worker; Q di n cresce approssimativamente come n su due e resta un intero sicuro in tale intervallo. Abbini questa pagina a Fibonacci, Padovan, Collatz e altri strumenti di successioni quando costruisce un piccolo laboratorio ricreativo di teoria dei numeri con endpoint gratuiti e deterministici.
Casi di integrazione
Fixture di test deterministiche
Generi valori Q riproducibili per test unitari, controlli di proprietà e asserzioni CI che fissano indici noti e termini attesi.
Domande tecniche
L'algoritmo è casuale?
No. Usa solo aritmetica intera deterministica. Non c'è rete, non c'è Date e non c'è Math.random.