Problem VB a rekurzia – Visual Basic – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Problem VB a rekurzia – Visual Basic – Fórum – Programujte.comProblem VB a rekurzia – Visual Basic – Fórum – Programujte.com

 

pioneer
~ Anonymní uživatel
2 příspěvky
24. 8. 2007   #1
-
0
-

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

Nahlásit jako SPAM
IP: ...–
maty0
Návštěvník
28. 8. 2007   #2
-
0
-

myslíš jako
if podminka then exit sub??

Nahlásit jako SPAM
IP: ...–
1 nebo 0 toť otázka
pioneer
~ Anonymní uživatel
2 příspěvky
28. 8. 2007   #3
-
0
-

nie ... ale uz som to vyriesli ... dik za zaujem

Nahlásit jako SPAM
IP: ...–
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žit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Java - rekurzia — založil Marek

Problem s &lt; a &gt; — založil 7raul

Problém — založil rotoro

Problem — založil roonill

Problém v C++ — založil Anonim

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý