Числовой ряд заданный рекурсивно - QBasic
Формулировка задачи:
Задан числовой ряд следующими формулами
a(n) = n при n <= 3
a(n) = a(n - k) + a(n - m)
m = INT(SIN(i) + 3)
k = INT(COS(i) + 3)
Надо распечатать первые его 23 члена.
...
Вопрос
Можно ли этот ряд вычислить обычным способом без рекурсии?
Тут есть одно НО. Как это сделать... ведь два дополнительных
параметра m и k мешаются под ногами?
Решение задачи: «Числовой ряд заданный рекурсивно»
textual
Листинг программы
CONST n AS LONG = 23 DIM i AS LONG, m AS LONG, k AS LONG, a(3) AS DOUBLE, f AS DOUBLE FOR i = 1 TO n IF i <= 3 THEN f = i ELSE m = INT(SIN(i) + 3) k = INT(COS(i) + 3) f = a((i + 3 - k) MOD 4) + a((i + 3 - m) MOD 4) END IF a((i - 1) MOD 4) = f PRINT f; NEXT i
Объяснение кода листинга программы
В этом коде:
- Задано значение константы
n
равное 23. - В цикле
FOR
происходит обход чисел от 1 доn
. - Внутри цикла проверяется условие
i <= 3
, если оно истинно, то переменнойf
присваивается значениеi
. - Если условие ложно, то переменной
m
присваивается ближайшее целое число, которое больше или равноINT(SIN(i) + 3)
. - Переменной
k
присваивается ближайшее целое число, которое больше или равноINT(COS(i) + 3)
. - Значение переменной
f
вычисляется как сумма двух чисел, которые находятся в массивеa
по индексам ((i + 3 - k) MOD 4) и ((i + 3 - m) MOD 4). - Полученное значение переменной
f
записывается в массивa
по индексу ((i - 1) MOD 4). - Значение переменной
f
выводится на экран с помощью командыPRINT
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д