Małe kropki wskazują, że seria będzie kontynuowana. Oto twoje rozwiązanie:
Rozważmy 1 oparty indeks. Zauważasz, że 1 występuje w indeksie 1, (1 + 2) = 3, (1 + 2 + 3) = 6, (1 + 2 + 3 + 4) = 10 itd. Mamy na to formułę. Jego n * (n + 1)/2.
Więc dla danego indeksu (obecnie jest to 0 oparciu jako tablicy java zaczyna się w indeksie 0) wykonaj następujące czynności:
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;
Również nie ma potrzeby rekursji jest to O (1) rozwiązanie (nie biorąc pod uwagę złożoność funkcji pierwiastka kwadratowego)
Jak przechowywać Ci sekwencję? Jeśli to wiesz, odpowiedź będzie dość banalna. Wiele struktur danych umożliwia dostęp przez indeks (tablica, lista, łańcuch znaków). –
Sprawdź, czy 'index + 1' jest numerem trójkąta: http://en.wikipedia.org/wiki/Triangular_number – Henrik