Zdravím potreboval by som pomoc s vb a korektným ukončenim rekurzie v takomto príklade:
máme šesťuholník každý vrchol šesťuholníka je očíslovaný teda 0 - 1 - 2 - 3 - 4 - 5 ja idem po jednotlivých vrcholoch pomocou rekurzívnej funkcie avška keď sa dostanem opäť do bodu 0 chcem ukončiť rekurziu a vypísať nájdenú cestu .... nižšie sa nachádza kód ... vie mi niekto poradiť ako korektne ukončiť rekurziu a pokračovať výpisom ?? pretože sa za cyklím a až po naplnení poľa postupka (m*m) mi to vyhodí chybu
dík za radu ....
ide o vb 6
Global pole() As Integer
Public Const M As Integer = 5
Dim slucka As Integer
Dim max_dlzka As Integer
Dim postupka(M * M) As Integer
Dim max_postupka(M * M) As Integer
Dim p As Integer
Dim retaz As String
Sub main()
slucka = 0
retaz = ""
Dim i As Integer
Dim j As Integer
ReDim pole(M, M)
For i = 0 To M
For j = 0 To n
pole(i, j) = 0
Next j
Next i
pole(0, 1) = 1
pole(0, 5) = 1
pole(1, 0) = 1
pole(1, 2) = 1
pole(2, 1) = 1
pole(2, 3) = 1
pole(3, 2) = 1
pole(4, 3) = 1
pole(4, 5) = 1
pole(5, 0) = 1
pole(5, 4) = 1
'vytvorenie a naplnenie pola
Call cesta
For i = 0 To max_dlzka
retaz = retaz + Str$(max_postupka(i))
Next i
MsgBox ("Najdlhsia cesta :" + retaz)
End Sub
Sub cesta()
Dim i As Integer
' Dim p As Integer
max_dlzka = 0
'prechadzame vsetky riadky v matici
For i = 0 To M
p = 0
postupka(p) = i
Call cestaR(i, 0, p)
Next i
End Sub
Sub cestaR(r As Integer, s As Integer, p As Integer)
Dim n As Integer
Dim j As Integer
If p < 0 Then
p = 0
End If
For j = 0 To M
If (((p = 0 And s = 0) Or Not j = s) And pole(r, j) = 1) Then
p = p + 1 'nasiel sa bod
postupka(p) = j
If postupka(0) = postupka(p) Then
For n = 0 To p
max_postupka(n) = postupka(n)
Next n
' tu korektne vyskocit
ElseIf p > max_dlzka Then
max_dlzka = p
For n = 0 To p
max_postupka(n) = postupka(n)
Next n
End If
Call cestaS(r, j, p)
End If
Next j
p = p - 1 'mozno az za next j
End Sub
Sub cestaS(r As Integer, s As Integer, p As Integer)
Dim i As Integer
Dim n As Integer
If p < 0 Then
p = 0
End If
For i = 0 To M
If (((p = 0 And s = 0) Or Not i = r) And pole(i, s) = 1) Then
p = p + 1 'nasiel sa dalsi bod
postupka(p) = i
If postupka(0) = postupka(p) Then
For n = 0 To p
max_postupka(n) = postupka(n)
Next n
ElseIf p > max_dlzka Then
max_dlzka = p
For n = 0 To p
max_postupka(n) = postupka(n)
Next n
End If
Call cestaR(i, s, p)
End If
Next i
p = p - 1
End Sub
Fórum › Visual Basic
Problem VB a rekurzia
Zjistit počet nových příspěvků
Přidej příspěvek
Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
Uživatelé prohlížející si toto vlákno
Uživatelé on-line: 0 registrovaných, 2 hosté
Podobná vlákna
Java - rekurzia — založil Marek
Problem s < a > — založil 7raul
Problém v C++ — založil Anonim
Moderátoři diskuze