Пример 4.4. Числа
Фибоначчи ( Fi )
определяются по формулам F0 =
F1 = 1; Fi =
Fi –1 + Fi –2
при i = 2, 3, ... (каждое очередное число равно
сумме двух предыдущих).
Вычислить сумму всех чисел Фибоначчи,
которые не превосходят заданного
натурального числа М.
Тест
Номер теста
Данные
Результат
1
M=10
S=1+1+2+3+5+8=20
2
M=1
S=1+1=2
Демонстрация
Школьный АЯ
алг Фибоначчи (арг цел М, рез цел S)
дано | M>0
нач цел F0, F1, F2
F0:=1; F1:=1; F2:=2
S:=4 | 4 – сумма первых трех чисел Фибоначчи
нц покаF2<=M
F0:=F1; F1:=F2; F2:=F0+F1 | серия переприсваиваний
S:=S+F2;
кц
S:=S–F2 | из S вычитается последнее значение F2, превосходящее M
кон
Исполнение алгоритма
F0
F1
F2
S
F2<M
1
1
2
3
5
1
2
3
5
8
2
3
5
8
13
4
4+3=7
7+5=12
12+8=20
20+13=33
+
+
+
+
-(кц)
33-13=20
Блок-схема
Turbo Pascal
Program SummaFib;
Uses Crt;
Var M, {заданное число }
F0, F1, F2, {три последовательных числа Фибоначчи}
S : Integer; {сумма чисел Фибоначчи}
BEGIN
ClrScr;
Write(’Введите натуральное М : ’);
ReadLn(M);
F0:=1; F1:=1; F2:=2;
S:=4; {4 – сумма первых трех чисел Фибоначчи}
Write(’Числа Фибоначчи, не превосходящие ’, M, ’ :’, F0:4, F1:4);
While F2<=M do
begin
F0:=F1; F1:=F2; Write(F1 : 4);
F2:=F0+F1; S:=S+F2;
end;
S:=S–F2; {вычитание из суммы последнего числа, которое превосходит М}
WriteLn; WriteLn;
WriteLn(’О т в е т : Сумма этих чисел равна ’, S); ReadLn
END.
Результаты работы Pascal-программы
Введите натуральное M>0
: 10 <Enter> Числа Фибоначчи, не
превосходящие 10 : 1 1 2 3 5
8 О т в е т : Сумма этих
чисел равна 20