![]() |
#1 (permalink) |
Member
Регистрация: 22.10.2016
Сообщений: 62
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
![]() 1. В обычной рекурсии функция А() вызывает сама себя 2. В косвенной рекурсии функция А() вызывает функцию Б(). А та в свою очередь вызывает функцию А(). (это простой случай) 3. В более сложном случае. Одна функция вызывает другую. Та - третью (а также может вызвать себя или вторую или первую). Смесь невообразимая. 4. Здесь две функции. И они вызывают то себя, то друг друга... Формулы для справки: 1) sin(n) = sin(n-1)cos(1) + cos(n-1)sin(1) 2) cos(n) = cos(n-1)cos(1) - sin(n-1)sin(1) 3) sin(2n) = 2sin(n)cos(n) 4) cos(2n) = cos(n)^2 - sin(n)^2 Код:
DECLARE FUNCTION SS$ (n%) DECLARE FUNCTION S (n%) DECLARE FUNCTION C (n%) DIM n AS INTEGER DIM SHARED s1, c1 CLS CLEAR , , 26000 INPUT "n = "; n s1 = .017452406# c1 = .999847695# PRINT "sin(" + SS(n) + ")= "; S(n) PRINT "cos(" + SS(n) + ")= "; C(n) END FUNCTION C (n AS INTEGER) DIM sn, cn IF n = 0 THEN C = 1 ELSE IF n MOD 2 = 0 THEN sn = S(n \ 2) cn = C(n \ 2) C = cn * cn - sn * sn ELSE sn = S(n - 1) cn = C(n - 1) C = cn * c1 - sn * s1 END IF END IF END FUNCTION FUNCTION S (n AS INTEGER) DIM sn, cn IF n = 0 THEN S = 0 ELSE IF n MOD 2 = 0 THEN sn = S(n \ 2) cn = C(n \ 2) S = 2 * sn * cn ELSE sn = S(n - 1) cn = C(n - 1) S = sn * c1 + cn * s1 END IF END IF END FUNCTION FUNCTION SS$ (n AS INTEGER) SS = LTRIM$(STR$(n)) END FUNCTION |
![]() |
![]() |
![]() |
|
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Ранее на нашем форуме участники создавали аналогичные топики Рекурсия Рекурсия рекурсия Рекурсия Рекурсия |
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
![]() |
Опции темы | |
Опции просмотра | |
|
|