![]() ![]() ![]() |
![]() Главная страница | ![]() Оглавление курса |
![]() Предыдущий модуль |
![]() Следующий модуль |
![]() Поиск терминов | ![]() Настройки | ![]() Версия для печати |
Private Function fact (ByVal n As Integer) As Double Dim i As Integer Fact = 1 For i = 1 To n 'перемножаем все числа от 1 до n fact = fact * i Next End Function
Private Function fact (ByVal n As Integer) As Double If n <= 0 Then 'проверяем условие выхода из рекурсии fact = 1 Else fact = num * fact (n - 1) 'перемножаем промежуточный результат и на единицу меньшее число End If End Function
Dim M As Integer Dim N As Integer Dim X() As Integer Private Sub Sequences() Dim i As Integer Dim j As Integer M = CInt (InputBox ("Введите M")) N = CInt (InputBox ("Введите N")) ReDim X(N) txtOut.Text = "" For i = 1 To N X(i) = 1 Next Yes = False For i = 1 To M ^ N For j = 1 To N txtOut.Text = txtOut.Text & CStr(X(j)) Next txtOut.Text = txtOut.Text & vbCrLf NextS Next End Sub Private Sub NextS() Dim i As Integer i = N Do While (i > 0) And (X(i) = M) X(i) = 1 i = i - 1 Loop If i > 0 Then (i) = X(i) + 1 End Sub
Dim M As Integer Dim N As Integer Dim X() As Integer Private Sub SequencesRecursion() M = 5 N = 5 ReDim X(N) txtOut.Text = "" SRGenerate 0 End Sub Private Sub SRGenerate (ByVal K As Integer) Dim i As Integer Dim j As Integer If K = N Then For i = 1 To N txtOut.Text = txtOut.Text & CStr(X(i)) Next txtOut.Text = txtOut.Text & vbCrLf Else For j = 1 To M X(K + 1) = j SRGenerate (K + 1) Next End If End Sub
Private Function PereCount (ByVal n As Integer) As Double PereCount = fact (n) End Function Private Function fact (ByVal n As Integer) As Double Dim i As Integer Fact = 1 For i = 1 To n 'перемножаем все числа от 1 до n fact = fact * i Next End Function
Dim N As Integer Dim X () As Integer Private Sub Perestanovki () Dim i As Integer N = CInt (InputBox ("Введите N")) ReDim X (N) For i = 1 To N X (i) = i Next PRGenerate 0 End Sub Private Sub PRGenerate (ByVal k As Integer) Dim i As Integer If k = N Then For i = 1 To N txtOut.Text = txtOut.Text & CStr (X (i)) Next txtOut.Text = txtOut.Text & vbCrLf Else For i = k + 1 To N Swap X (k + 1), X (i) PRGenerate k + 1 Swap X (k + 1), X (i) Next End If End Sub Private Sub Swap (ByRef a As Integer, ByRef b As Integer) Dim c As Integer c = a a = b b = c End Sub
Private Function SochCount (ByVal n As Integer, ByVal k As Integer) As Double SochCount = fact (n) / (fact (k) * fact (n-k)) End Function Private Function fact (ByVal n As Integer) As Double Dim i As Integer Fact = 1 For i = 1 To n 'перемножаем все числа от 1 до n fact = fact * i Next End Function
Private Function SochTT (ByVal n As Integer, ByVal k As Integer) As Double Dim i As Integer Dim j As Integer Dim TT () As Double ReDim TT (n, k) For i = 0 To n TT (0, i) = 1 TT (i, i) = 1 Next For i = 2 To n For j = 1 To i - 1 TT (i, j) = TT (i - 1, j - 1) + TT (i - 1, j) Next Next SochTT = TT (n, k) End Function
Dim TT () As Double Private Sub CreateTT () ReDim TT (0, 0) BuildTT 0, 0 End Sub Private Function SochTT (ByVal n As Integer, ByVal k As Integer) As Double If n > Ubound (TT) Then BuildTT Ubound (TT) + 1, n SochTT = TT (n, k) End Function Private Sub TerminateTT () ReDim TT (0, 0) End Sub Private Sub BuildTT (ByVal start As Integer, ByVal end As Integer) Dim i As Integer Dim j As Integer ReDim Preserve TT (end, end) For i = start To end TT (0, i) = 1 TT (i, i) = 1 Next If end < 2 Then Exit Sub If start < 2 Then start = 2 For i = start To end For j = 1 To i - 1 TT (i, j) = TT (i - 1, j - 1) + TT (i - 1, j) Next Next End Sub
Dim X () As Integer Dim Counter () As Integer Dim K As Integer Dim N As Integer Public Sub Soch() Dim i As Integer N = CInt(InputBox("Введите N")) K = CInt(InputBox("Введите K")) K = K + 1 ReDim X(N) For i = 1 To N X(i) = i Next txtOut.Text = "" ReDim Counter(K) Counter(0) = 1 SochGenerate 1 End Sub Private Sub SochGenerate(ByVal c As Integer) Dim i As Integer Dim j As Integer Dim n1 As Integer Dim Out() As Integer Dim X1() As Integer If c = K Then ReDim Out(K) X1 = X For i = 1 To K - 1 n1 = 0 For j = 1 To N If X1(j) <> 0 Then n1 = n1 + 1 If n1 = Counter(i) Then Out(i) = X1(j) X1(j) = 0 Exit For End If Next txtOut.Text = txtOut.Text & CStr(Out(i)) Next txtOut.Text = txtOut.Text & vbCrLf Else For Counter(c) = Counter(c - 1) To N - c + 1 SochGenerate c + 1 Next End If End Sub
Private Function RazmCount (ByVal n As Integer, ByVal k As Integer) As Double RazmCount = fact (n) / fact (n - k) End Function Private Function fact (ByVal n As Integer) As Double Dim i As Integer Fact = 1 For i = 1 To n 'перемножаем все числа от 1 до n fact = fact * i Next End Function
Dim X () As Integer Dim Counter () As Integer Dim Out() As Integer Dim K As Integer Dim N As Integer Private Sub Razm () Dim i As Integer N = CInt(InputBox("Введите N")) K = CInt(InputBox("Введите K")) K = K + 1 ReDim X(N) ReDim Out(K) For i = 1 To N X(i) = i Next txtOut.Text = "" ReDim Counter(K) Counter(0) = 1 RazmSochGenerate 1 End Sub Private Sub RazmSochGenerate () Dim i As Integer Dim j As Integer Dim n1 As Integer Dim X1() As Integer If c = K Then X1 = X For i = 1 To K - 1 n1 = 0 For j = 1 To N If X1(j) <> 0 Then n1 = n1 + 1 If n1 = Counter(i) Then Out(i) = X1(j) X1(j) = 0 Exit For End If Next Next PRGenerate 0 Else For Counter(c) = Counter(c - 1) To N - c + 1 RazmSochGenerate c + 1 Next End If End Sub Private Sub PRGenerate (ByVal k As Integer) Dim i As Integer If k = N Then For i = 1 To N txtOut.Text = txtOut.Text & CStr (Out (i)) Next txtOut.Text = txtOut.Text & vbCrLf Else For i = k + 1 To N Swap Out (k + 1), Out (i) PRGenerate k + 1 Swap Out (k + 1), Out (i) Next End If End Sub Private Sub Swap (ByRef a As Integer, ByRef b As Integer) Dim c As Integer c = a a = b b = c End Sub
![]() Главная страница | ![]() Оглавление курса |
![]() Предыдущий модуль |
![]() Следующий модуль |
![]() Поиск терминов | ![]() Настройки | ![]() Версия для печати |