AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein VB: Stapelspeicher voll bei Rekursion
Thema durchsuchen
Ansicht
Themen-Optionen

VB: Stapelspeicher voll bei Rekursion

Ein Thema von glkgereon · begonnen am 19. Apr 2005 · letzter Beitrag vom 19. Apr 2005
Antwort Antwort
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#1

VB: Stapelspeicher voll bei Rekursion

  Alt 19. Apr 2005, 08:07
hi

ja ich weiss, ich bin auch nicht so vin VisualBasic überzeugt, aber da ich wirklich nichts anderes da hab habe ich versucht ein paar kleine Makros für Excel zu schreiben. So Primfaktorzerlegung, Fibonacci, das ganze programm halt.

nun habe ich versucht die Primfaktorzerlegung Rekursiv zu implementieren.

leider kommt immer der fehler 26: Stapelspeicher voll.

mein code:

Code:
Public Function Prim_Recursion(zahl As Long, faktor As Long, zeile As Long) As Integer
    If zahl > 0 Then
        If zahl Mod faktor = 0 Then
            Tabelle1.Cells(zeile, 2) = faktor
            zahl = Round(zahl / faktor)
            Tabelle1.Cells(zeile, 3) = zahl
            Prim_Recursion = Prim_Recursion(zahl, faktor, zeile + 1)
        Else
            Prim_Recursion = Prim_Recursion(zahl, faktor + 1, zeile)
        End If
    End If
End Function

Sub PrimRec()
    Tabelle1.Cells(2, 1) = Prim_Recursion(Tabelle1.Cells(1, 1), 2, 1)
End Sub
warum?

das kommt auch wenn in (1,1) 12 steht.

das ergebnis wird (ganz nebenbei) völlig korrekt angezeigt.
auch mit größeren zahlen und mehr faktoren funzt es (zb 1024)
habe ich irgendwas übersehen, wo es sich "zum handkoffer" rekursiert (oder so..)?

mfg gereon

[edit=sakura] [Klammern ersetzt] Mfg, sakura[/edit]
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#2

Re: VB: Stapelspeicher voll bei Rekursion

  Alt 19. Apr 2005, 08:10
AAARGGHHH

sry für den post, hab den fehler...

der letzte faktor ist natürlich 1, und nicht 0

ich poste nochmal den korrekten code:

Code:
Public Function Prim_Recursion(zahl As Long, faktor As Long, zeile As Long) As Integer
    If zahl > 1 Then
        If zahl Mod faktor = 0 Then
            Tabelle1.Cells(zeile, 2) = faktor
            zahl = Round(zahl / faktor)
            Tabelle1.Cells(zeile, 3) = zahl
            Prim_Recursion = Prim_Recursion(zahl, faktor, zeile + 1) + 1
        Else
            Prim_Recursion = Prim_Recursion(zahl, faktor + 1, zeile)
        End If
    End If
End Function

Sub PrimRec()
    Tabelle1.Cells(2, 1) = Prim_Recursion(Tabelle1.Cells(1, 1), 2, 1)
End Sub
@sakura: hatte ich doch
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz