@weiestrass, vero MA si possono definire delle metriche per scegliere l'algoritmo di complessita' minima.
NON complessita' computazionale, ma complessita dell'implementazione.
Il piu' semplice e' contare il numero di simboli usati per rappresentarlo: ad esempio il numero di caratteri.
Possiamo supporre che l'algoritmo sia composto da DUE componenti (uso la sintassy Python giusto per comodita'):
def init() -> list[int]:
a0 = ...
b0 = ...
...
return [a0,b0,...]
che ritorna i valori iniziali (seme) della sequenza, e
def next(pi: list[int]) -> list[int]:
ai, bi, ... = pi
aj = ...
bj = ...
return [aj,bj,...]
ritorna la prossima lista di valori.
Per esempio la tua sequenca potrebbe essere definita come
def init(): return [0]
def next(p): return [0]
La sequenza di fibonacci come
def init(): return [1,1]
def next(p):
a, b = p
return [b, a+b]
I numeri naturali come
def init(): return [0]
def next(p):
i = p[0]
return [i+1]
La sequenza di quadrati
def init(): return [1,1]
def next(p):
i, i2 = p
return [i+1, (i+1)*(i+1)]