к уроку информатики по программированию решение

  • docx
  • 28.05.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Задача по программированию Вывести на экран сумму чисел Фибоначчи до n-ного включительно.docx

Задача № 47. Вывести на экран сумму чисел Фибоначчи до n-ного включительно

Формулировка. Дано натуральное n (которое также может быть равно 0). Вывести на экран сумму чисел Фибоначчи до n-ного включительно. Например, при n = 3 нам необходимо получить сумму 0-го, 1-го, 2-го и 3-го членов последовательности.

Решение. Задача основана на предыдущей, так как здесь нам тоже необходимо найти каждое число Фибоначчи до n включительно, однако теперь мы должны прибавлять найденные числа к некоторой переменной суммы (sum), которая потом будет выведена на экран.

Используем код предыдущей задачи:

readln(n);

fib0 := 0;

fib1 := 1;

for i := 2 to n do begin

  fib := fib1 + fib0;

  fib0 := fib1;

  fib1 := fib

end;

if n = 0 then fib1 := 0;

writeln(fib1);

Чтобы переделать этот код по текущему назначению, мы должны добавить в цикл прибавление найденного числа Фибоначчи к переменной sum. Например, так:

for i := 2 to n do begin

  fib := fib1 + fib0;

  sum := sum + fib;

  fib0 := fib1;

  fib1 := fib

end;

Кроме того, следует исправить вывод ответа, так как нам необходимо вывести не последнее найденное число Фибоначчи, а сумму найденных чисел:

writeln(sum);

Очевидно, что вход в цикл не происходит при n = 0 и n = 1. Следовательно, правильную обработку этих случаев мы должны обеспечить инициализацией значений переменной sum, как мы это делали в предыдущей задаче.

Так как сумма нулевого и 1-го чисел Фибоначчи равна 1, то sum можно инициализировать значением 1. При входе в цикл первые два числа уже обработаны, поэтому при вводе n >= 2 накопление суммы также будет верным. Но очевидно, что в случае n = 0 необходимо инициализировать переменную sum значением 0. Реализовать эти два варианта можно так:

if n = 0 then sum := 0 else sum := 1;

Код:

    1.    program FibonacciNumbersSum;

    2.     

    3.    var

    4.      fib0, fib1, fib, sum: integer;

    5.      i, n: byte;

    6.     

    7.    begin

    8.      readln(n);

    9.      fib0 := 0;

  10.      fib1 := 1;

  11.      if n = 0 then sum := 0 else sum := 1;

  12.      for i := 2 to n do begin

  13.        fib := fib1 + fib0;

  14.        sum := sum + fib;

  15.        fib0 := fib1;

  16.        fib1 := fib

  17.      end;

  18.      writeln(sum)

  19.    end.

 


 

Скачано с www.znanio.ru