Существует хорошо известный вопрос здесь , что просит короткие (наименее символов) генератор последовательности Фибоначчи.
Я хотел бы знать, может ли кто-то генерировать только первые N элементов последовательности Фибоначчи за очень короткое время. Я пытаюсь сделать это на python, но меня интересует любой короткий ответ, на любом языке. Функция F (N) генерирует первые N элементов последовательности, либо возвращает их как возврат функции, либо печатает их.
Интересно, что ответы на вопросы кода-гольфа начинаются с 1 1 2
, а не с 0 1 1 2
. Это соглашение в код-гольфе или программировании в целом? (Википедия говорит, что последовательность Фибоначчи начинается с нуля.)
Образец Python (первые 5 элементов):
def f(i,j,n):
if n>0:
print i;
f(j,i+j,n-1)
f(1,1,5)
F_0 = 0, F_1 = 1
или эквивалентно F_1 = 1, F_2 = 1
. Разница в том, хотите ли вы начать последовательность с индекса 0 (чаще встречается в программировании) или 1 (чаще встречается в математике).
F_0 = 0, F_1 = 1
имеет определенное преимущество в простоте с матричным представлением [[1 1][1 0]]^n = [[F_{n+1} F_n][F_n F_{n-1}]]
.