Dấu chấm nhỏ cho biết chuỗi này sẽ tiếp tục. Vì vậy, đây là giải pháp của bạn:
Cho phép xem xét chỉ mục dựa trên 1. Bạn nhận thấy rằng 1 xảy ra tại chỉ số 1, (1 + 2) = 3, (1 + 2 + 3) = 6, (1 + 2 + 3 + 4) = 10 v.v. Chúng ta có một công thức cho việc này. N * (n + 1)/2 của nó.
Vì vậy, cho chỉ số nhất định (bây giờ điều này là 0 dựa như mảng java bắt đầu từ chỉ số 0) làm như sau:
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;
Cũng không có nhu cầu về đệ quy như thế này là O (1) giải pháp (không xem xét sự phức tạp của chức năng gốc hình vuông)
Làm thế nào để bạn lưu trữ bạn chuỗi? Nếu bạn biết điều đó, thì câu trả lời sẽ khá tầm thường. Rất nhiều datastructures cho phép truy cập theo chỉ mục (mảng, danh sách, String) –
Kiểm tra nếu 'index + 1' là một số tam giác: http://en.wikipedia.org/wiki/Triangular_number – Henrik