Вычислить 20 членов последовательности - QBasic
Формулировка задачи:
Задана рекуррентная последовательность соотношениями
f(n) = f(n - 1) + b(n - 1)
b(n) = f(n - 1) * b(n - 1) MOD 100 + n
f(1) = b(1) = 1
Надо вычислить 20 членов f(n) (косвенная рекурсия)
Решение задачи: «Вычислить 20 членов последовательности»
textual
Листинг программы
DECLARE FUNCTION b! (n!) DECLARE FUNCTION f! (n!) CONST Count = 50 DIM SHARED arr_b (Count) AS INTEGER DIM SHARED arr_f (Count) AS INTEGER CLS FOR i = 1 TO Count PRINT f(i) NEXT END FUNCTION b (n) IF arr_b (n) > 0 THEN b = arr_b (n) ELSE IF n = 1 THEN arr_b (n) = 1 ELSE arr_b (n) = f(n - 1) * b(n - 1) MOD 100 + n END IF b = arr_b (n) END IF END FUNCTION FUNCTION f (n) IF arr_f (n) > 0 THEN f = arr_f (n) ELSE IF n = 1 THEN arr_f(n) = 1 ELSE arr_f (n) = f(n - 1) + b(n - 1) END IF f = arr_f (n) END IF END FUNCTION
Объяснение кода листинга программы
В этом коде решается задача вычисления 20 членов последовательности с помощью функций b(n) и f(n). Список переменных и их значений:
- DECLARE FUNCTION b(n) - объявление функции b, которая принимает один аргумент n.
- DECLARE FUNCTION f(n) - объявление функции f, которая принимает один аргумент n.
- CONST Count = 50 - определение константы Count, которая равна 50.
- DIM SHARED arr_b(Count) AS INTEGER - определение массива arr_b размером Count, который будет использоваться как общий для всех функций.
- DIM SHARED arr_f(Count) AS INTEGER - определение массива arr_f размером Count, который будет использоваться как общий для всех функций.
- CLS - очистка экрана перед выводом результатов.
- FOR i%=1 TO Count - начало цикла, который будет выполняться от 1 до Count.
- PRINT f(i%) - вывод значения функции f на экран.
- NEXT - переход к следующей итерации цикла.
- END - конец цикла.
- FUNCTION b(n) - определение функции b.
- IF arr_b(n) > 0 THEN - проверка, есть ли значение в массиве arr_b.
- b = arr_b(n) - присваивание значения из массива arr_b переменной b.
- ELSE - если значение в массиве arr_b отсутствует.
- IF n = 1 THEN - проверка, является ли n равным 1.
- arr_b(n) = 1 - присваивание значения 1 массиву arr_b.
- ELSE - если n не равно 1.
- arr_b(n) = f(n-1) * b(n-1) MOD 100 + n - присваивание значения функции f, умноженного на значение функции b, массиву arr_b.
- END IF - закрытие блока проверки.
- b = arr_b(n) - присваивание значения массива arr_b переменной b.
- END IF - закрытие блока проверки.
- FUNCTION f(n) - определение функции f.
- IF arr_f(n) > 0 THEN - проверка, есть ли значение в массиве arr_f.
- f = arr_f(n) - присваивание значения из массива arr_f переменной f.
- ELSE - если значение в массиве arr_f отсутствует.
- IF n = 1 THEN - проверка, является ли n равным 1.
- arr_f(n) = 1 - присваивание значения 1 массиву arr_f.
- ELSE - если n не равно 1.
- arr_f(n) = f(n-1) + b(n-1) - присваивание значения функции f, плюс значение функции b, массиву arr_f.
- END IF - закрытие блока проверки.
- f = arr_f(n) - присваивание значения массива arr_f переменной f.
- END IF - закрытие блока проверки. В результате выполнения этого кода на экран будет выведено 20 членов последовательности, используя функции b и f.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д