iİnformatikanın məktəbdə tədrisi

2-24r

Последовательность 1, 1, 2, 3, 5, 8, …, в которой каждый член, начиная с третьего, равен сумме двух предыдущих членов, называется последовательностью Фибоначчи. Для заданного n найти n – ое число Фибоначчи. До какого значения n мы получим верный результат?

Для получения следующего числа Фибоначчи необходимо иметь два предыдущих значения. В нашей программе это  b  и  a. В начале они равны 1 (строка 7). Цикл мы начинаем с 3-го числа и продолжаем до n (строка 8). Получение новой пары чисел Фибоначчи – нового значения и предыдущего значения осуществляется в строках 10, 11.
Как и в случае с задачей 22 (вычисления факториала) здесь интересен рост значений чисел этой последовательности. Так при объявлении  b,a:integer; (строка 3) правильный результат мы получим до n=46 (включительно). При объявлении b,a:int64; - до n=92. Проверьте границы верных значений при объявлениях b,a:double; b,a:extended; Заметим, что 500-ое число Фибоначчи имеет 105 цифр, а 1000-ое – 209 цифр.





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

Program A2_24;

Var

  b,a:integer;

  n,i:integer;

BEGIN

 readln(n);

 b:=1;  a:=1;

 for i:=3 to n do

  begin

   b:=b+a;

   a:=b-a;

  end;

 writeln(b);

 readln;

END.

//Program A2.24;

#include <iostream>

 

using namespace std;

 

int main()

{

    int b=1,a=1;

    int n,i;

    cin>>n;

    for(i=3;i<=n;i++)

    {

        b=b+a;

        a=b-a;

    }

    cout<<b<<endl;

    return 0;

}