Вычисление суммы необычного ряда - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д