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