Числовой ряд заданный рекурсивно - 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

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

В этом коде:

  1. Задано значение константы n равное 23.
  2. В цикле FOR происходит обход чисел от 1 до n.
  3. Внутри цикла проверяется условие i <= 3, если оно истинно, то переменной f присваивается значение i.
  4. Если условие ложно, то переменной m присваивается ближайшее целое число, которое больше или равно INT(SIN(i) + 3).
  5. Переменной k присваивается ближайшее целое число, которое больше или равно INT(COS(i) + 3).
  6. Значение переменной f вычисляется как сумма двух чисел, которые находятся в массиве a по индексам ((i + 3 - k) MOD 4) и ((i + 3 - m) MOD 4).
  7. Полученное значение переменной f записывается в массив a по индексу ((i - 1) MOD 4).
  8. Значение переменной f выводится на экран с помощью команды PRINT.

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


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

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

5   голосов , оценка 3.4 из 5
Похожие ответы