Вычисление суммы необычного ряда - QBasic

Узнай цену своей работы

Формулировка задачи:

Чтобы понять что нам надо вычислить рассмотрим числовую последовательность 1234, 1243, ... 4321. (Это перестановки чисел 1,2,3,4) С каждой такой перестановкой связана функция. Например 1234 - sin(1sin(2sin(3sin(4x)))) 4321 - sin(4sin(3sin(2sin(1x)))) надеюсь, что понятно Требуется найти "сумму всех перестановок" при x=1

Решение задачи: «Вычисление суммы необычного ряда»

textual
Листинг программы
DECLARE FUNCTION MyNarayanaNextPerm(n AS LONG) AS LONG
 
DIM SHARED prmArr(1 TO 11) AS LONG
DIM n AS LONG, i AS LONG, tmr AS SINGLE, x AS DOUBLE, s AS DOUBLE
    
FOR n = 1 TO 11
FOR i = 1 TO n: prmArr(i) = i: NEXT i
    tmr = TIMER
    s = 0
    DO
        x = 1
        FOR i = n TO 1 STEP -1
            x = SIN(x * prmArr(i))
        NEXT i
        s = s + x
    LOOP WHILE MyNarayanaNextPerm(n)
    PRINT "s(" + LTRIM$(STR$(n)) + ") ="; s, TIMER - tmr
NEXT n
'Sleep
 
FUNCTION MyNarayanaNextPerm(n AS LONG) AS LONG
    DIM i AS LONG, k AS LONG, t AS LONG, tmp AS LONG
    FOR k = n - 1 TO 1 STEP -1
      IF prmArr(k) < prmArr(k + 1) THEN EXIT FOR
    NEXT k
    IF k THEN
        t = n
        WHILE t > k AND prmArr(k) >= prmArr(t)
        t = t - 1
        WEND
        tmp = prmArr(k): prmArr(k) = prmArr(t): prmArr(t) = tmp
        t = n
        FOR i = k + 1 TO (n + k) \ 2
            tmp = prmArr(i): prmArr(i) = prmArr(t): prmArr(t) = tmp
            t = t - 1
        NEXT i
        MyNarayanaNextPerm = i
    END IF
END FUNCTION

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


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

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

7   голосов , оценка 4.286 из 5