Piccoli punti indicano che questa serie andrà avanti. Quindi ecco la soluzione:
Consideriamo 1 indice basato. Noti che 1 si verifica all'indice 1, (1 + 2) = 3, (1 + 2 + 3) = 6, (1 + 2 + 3 + 4) = 10 ecc. Abbiamo una formula per questo. È n * (n + 1)/2.
Così, per data indice (ora questo è 0 basa come matrice java inizia in corrispondenza dell'indice 0) effettuare le seguenti operazioni:
index = index + 1; // now it is 1 based index and our formula would fit in nicely.
index = index * 2;
sqroot = integer part of square root of index;
if(sqroot * (sqroot+1) == index)
print 1;
else
print 0;
Inoltre non v'è alcuna necessità di ricorsione in quanto questo è O (1) soluzione (non considerando la complessità della funzione radice quadrata)
Come si viene memorizzato la sequenza? Se lo sai, allora la risposta sarà abbastanza banale. Un sacco di strutture dati consentono l'accesso per indice (array, elenco, stringa) –
Controlla se 'index + 1' è un numero di triangolo: http://en.wikipedia.org/wiki/Triangular_number – Henrik