Формулировка. Дано натуральное 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
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.