Найти сумму числового ряда - QBasic
Формулировка задачи:
Задан ряд
1 + 2/(3*4) + (5*6)/(7*8*9) + (10*11*12)/(13*14*15*16) + ...
Всего 25 слагаемых (625 натуральных чисел)
Алгоритм ряда очевиден. Найти сумму этого ряда
Для решения задачи была использована формула
1 + 3 + 5 + ... (2n-1) = n2
Вопросы
1. Есть ли иное решение?
2. Я ходил около рекурсивного решения, но не нашел?
3. Изначально я хотел для этого ряда задать число
натуральных чисел, из которых он состоит, но эта задача
оказалась сложнее. И я решил задавать число слагаемых.
Может это не так сложно, как я думаю?
примечание
Очевидно, что если слагаемых N, то число натуральных
чисел N2
Листинг программы
- REM
- REM 1 + 2/(3*4) + (5*6)/(7*8*9) + ...
- REM
- REM OTBET: 1.333347
- REM
- DECLARE FUNCTION f! (n!)
- CLS
- S = 1
- FOR i = 2 TO 25
- S = S + f(i ^ 2)
- NEXT
- PRINT S
- END
- FUNCTION f (n)
- h = SQR(n) - 1
- h1 = h ^ 2 + 1
- h2 = h1 + h - 1
- p = 1
- FOR i = h1 TO h2
- p = p * i / (i + h)
- NEXT
- f = p / n
- END FUNCTION
Решение задачи: «Найти сумму числового ряда»
textual
Листинг программы
- DIM s AS DOUBLE, m AS DOUBLE, i AS LONG, j AS LONG, k AS LONG
- s = 1
- k = 1
- FOR i = 1 TO 24
- m = 1
- FOR j = 1 TO i
- k = k + 1
- m = m * k / (k + i)
- NEXT j
- k = k + j
- m = m / k
- s = s + m
- NEXT i
- PRINT s
Объяснение кода листинга программы
- Переменная
s
инициализируется значением 1. - Переменная
m
инициализируется значением 1. - Переменная
i
инициализируется значением 1. - Переменная
j
инициализируется значением 1. - Переменная
k
инициализируется значением 1. - Запускается цикл
FOR
для переменнойi
от 1 до 24. - Внутри цикла
FOR
переменнойm
присваивается значение 1. - Запускается вложенный цикл
FOR
для переменнойj
от 1 до текущего значения переменнойi
. - Внутри вложенного цикла
FOR
переменнойk
присваивается значение текущего значения переменнойk
+ значение переменнойj
. - Переменной
m
присваивается значениеk * (k + i)
/ (k + i). - Выполняется команда
NEXT j
, чтобы перейти к следующей итерации вложенного цикла. - Значение переменной
k
увеличивается на значение переменнойj
. - Переменной
m
присваивается значениеm / k
. - Значение переменной
s
увеличивается на значение переменнойm
. - Выполняется команда
NEXT i
, чтобы перейти к следующей итерации внешнего цикла. - Значение переменной
k
увеличивается на значение переменнойi
. - Переменной
m
присваивается значение 1. - После завершения циклов выводится значение переменной
s
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д