Вычисление суммы необычного ряда (6) - QBasic

Узнай цену своей работы

Формулировка задачи:

Надо вычислить сумму 100 слагаемых f(1)^.07 + f(2)^.07 + ... + f(100)^.07 где f(i) - число Фибоначчи. Программа сосчитала и получила число 800.0099. В качестве ответа можно записать 800.01 Вопросы 1. Как можно решить иначе? 2. Можно ли сократить вычисления? Ведь тут числа Фибоначчи есть в каждом слагаемое. 3. Сложно ли понять программу? Что тут лишнее?
Листинг программы
  1. REM
  2. REM S = 800.0099
  3. REM
  4. DECLARE FUNCTION f! (n!, a!, b!)
  5. CLS
  6. CLEAR , , 20000
  7. FOR n = 1 TO 100
  8. S = S + f(n, 1, 1) ^ .07
  9. NEXT
  10. PRINT S
  11. END
  12. FUNCTION f (n, a, b)
  13. IF n <= 2 THEN
  14. f = a
  15. ELSE
  16. f = f(n - 1, a + b, a)
  17. END IF
  18. END FUNCTION

Решение задачи: «Вычисление суммы необычного ряда (6)»

textual
Листинг программы
  1. var
  2.   count : integer := 0;
  3. function f(n : integer; a, b : double) : double;
  4. begin
  5.   inc(count);
  6.   if n <= 2 then result := a
  7.   else result := f(n - 1, a+b, a);
  8. end;
  9.  
  10. var s : double;
  11. begin
  12.   for var i := 1 to 100 do s := s + power(f(i, 1, 1), 0.07);
  13.   writeln(s:0:3);
  14.   writeln(count);
  15. end.

Объяснение кода листинга программы

  1. Объявлены три переменные: count, a и b типа integer и double соответственно, а также переменная s типа double.
  2. Переменная count инициализируется значением 0 и используется в качестве счетчика в цикле.
  3. Определена функция f(n; a, b) типа double, которая принимает три аргумента типа integer и double.
  4. Внутри функции происходит увеличение значения переменной count на 1.
  5. Если значение переменной n меньше или равно 2, то результатом работы функции становится значение переменной a.
  6. В противном случае, функция вызывает саму себя (f(n-1, a+b, a)), передавая в нее уменьшенное на 1 значение n и суммарное значение a и b, а также a в качестве аргументов.
  7. Результатом работы функции всегда является значение типа double.
  8. После определения функции, объявлен цикл for, который выполняет 100 итераций.
  9. На каждой итерации значение переменной s увеличивается на результат вычисления функции f(i, 1, 1), возведенный в степень 0.07.
  10. После завершения цикла, выводится значение переменной s до трех знаков после запятой и значение переменной count.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы