Вычислить "сумму перестановок" - VB

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

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

Мне попалась очень интересная математическая задача, но решить ее можно только написав программу. Здесь рассматривается частный случай N=4 Чтобы понять что нам надо вычислить рассмотрим числовую последовательность 1234, 1243, ... 4321. (Это перестановки чисел 1,2,3,4) С каждой такой перестановкой связана функция. Например 1234 - sin(1sin(2sin(3sin(4x)))) 4321 - sin(4sin(3sin(2sin(1x)))) надеюсь, что понятно Требуется найти "сумму всех перестановок" при x=1 То есть надо найти сумму вида "1234" + "1243" + ... + "4321" Где вместо перестановок стоят описанные выше функции (Всего в данном случае 24 функции) Эта задача решена в приведенной ниже программе. Вопрос. Как решить эту задачу в общем случае? Я предполагал использовать рекурсию? Но кто сумеет записать СТРОКУ 13? Ребята, помогите богу математики.

Решение задачи: «Вычислить "сумму перестановок"»

textual
Листинг программы
Dim sm#, x#, SSS$
Sub main()
  sm = 0
  Pn "1234"
  Debug.Print sm
  Stop
  sm = 0
  Pn "123456"
  Debug.Print sm
End Sub
Sub Pn(S As String, Optional SS As String = "")
Dim i As Integer
If Len(S) = 1 Then
  SSS = SS & S
  x = 1
  For i = Len(SSS) To 1 Step -1
    x = Sin(x * Mid$(SSS, i, 1))
  Next i
  Debug.Print SSS, x
  DoEvents
  sm = sm + x
Else
  For i = 1 To Len(S)
    Pn Left$(S, i - 1) & Mid$(S, i + 1), SS & Mid$(S, i, 1)
  Next
End If
End Sub

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

5   голосов , оценка 4 из 5
Похожие ответы