[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]

Пример 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
 
QBasic
CLS
INPUT "Введите натуральное М : " , M
F0 = 1 : F1 = 1 : F2 = 2
S = 4     ’4 – сумма первых трех чисел Фибоначчи
PRINT "Числа Фибоначчи, не превосходящие "; M ; " : " ; F0 ; F1 ;
WHILE F2 <= M
  F0=F1 : F1=F2 : PRINT F1;
  F2=F0+F1 : S=S+F2
WEND
S=S–F2   ’вычитание из суммы последнего числа, которое превосходит М
PRINT : PRINT : PRINT "О т в е т : Сумма этих чисел равна "; S
END
 

[ домой ] [ следующий ] [ начало главы ] [ предыдущий ] [ содержание ]