Вычислить 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) (косвенная рекурсия)
REM
REM   f(20) = 1034
REM
 
DECLARE FUNCTION b! (n!)
DECLARE FUNCTION f! (n!)
 
CLS
 
FOR i = 1 TO 20
   PRINT f(i)
NEXT
END
 
FUNCTION b (n)
   IF n = 1 THEN
      b = 1
   ELSE
      b = f(n - 1) * b(n - 1) MOD 100 + n
   END IF
END FUNCTION
 
FUNCTION f (n)
   IF n = 1 THEN
      f = 1
   ELSE
      f = f(n - 1) + b(n - 1)
   END IF
END FUNCTION

Код к задаче: «Вычислить 20 членов последовательности - QBasic»

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

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


СОХРАНИТЬ ССЫЛКУ