Числа Фібоначчі

Відомим прикладом рекурентної послідовності є послідовність чисел Фібоначчі.

Послідовність чисел 1, 1, 2, 3, 5, 8, 13,..., де f1=f2=1, а кожний наступний член дорівнює сумі двох попередніх, називається послідовністю чисел Фібоначчі. Таким чином, усі члени послідовності чисел Фібоначчі, починаючи з третього, задаються рекурентним співвідношенням fn=fn-2+fn-1. Числа Фібоначчі мають декілька цікавих властивостей. Зокрема, сусідні числа Фібоначчі є взаємно простими; найбільшим спільним дільником двох чисел Фібоначчі є число Фібоначчі; число Фібоначчі парне тоді і тільки тоді, коли його номер кратний трьом.

Розробимо програму, що генерує послідовність n перших чисел Фібоначчі. Нам знадобиться змінна fi для зберігання значення поточного члена послідовності та змінні f1 і f2 для зберігання значень двох попередніх членів. Значення f1 модифікуватиметься оператором fi :=f1+f2 , який увійде до складу циклу з лічильником. Після виконання цього оператора слід переприсвоїти значенням змінних f1 та f2 так, щоб вони містили нову пару чисел Фібоначчі. Це можна здійснювати операторами f1:=f2 та f2:=fi.

Програма, що генерує послідовність чисел Фібоначчі:

 

program fibonachi;

var f1,f2,fi:integer; {два попередніх та поточний член послідовності}

i,n:integer; {лічильник і загальна кількість членів послідовн.}

begin

write('Enter the length of Fibonacci sequence');

readln (n); {ввести кількість членів}

f1:=1; f2:=1; {ініціалізувати два перших члени}

if n>0 then write (f1); {якщо у послідовності принаймні один член}

if n>1 then write (' ',f2); {якщо у послідовності принаймні два члени}

for i:=3 to n do {цикл обчислення наступних членів}

begin

fi:=f1+f2; {обчислити поточний член послідовності}

f1:=f2; {сформувати нову пару доданків}

f2:=fi;

write (' ',fi); {вивести чергове число Фібоначчі}

end;

end.