Tiefe der Rekursion als Abbruchbedingung

Status
Nicht offen für weitere Antworten.

Linad

Mitglied
Ich möchte eine Dezimalzahl in ein anderes Zahlensystem umwandeln und zwar mit einer rekursiven Methode.

z.B. 0.456 ins 3er System

Nun mein Problem:

Ich finde nicht heraus, wie ich die Abbruchbedingung initialisiere. Mein Algorithmus muss ja mal terminieren bei einer unendlichen Zahlenfolge und nicht erst wenn der Speicher voll ist. :bahnhof:

Meine Code Beispiel funktioniert noch nicht, die Abbruchbedingung ist noch gar nicht mal definiert und sonst stimmt auch noch was nicht.


Code:
public String calculateDecimal(double num, int radix){
        
        double mul = num * radix;
        double rest = mul - (int)mul;
        
        if (num == 0){
            return(Integer.toString((int)mul));
        }
        return(calculateDecimal(rest,radix) + Integer.toString((int)mul));
    }
 
B

bygones

Gast
wieso du hast doch eine Abbruchedingung - falls num == 0...

ob sie korrekt ist heißt das ja noch nicht...
 

Linad

Mitglied
Du hast recht. Der Code ist falsch. Aber genau da liegt ja mein Problem bei der Abbruchbedingung. Hat jemand eine Idee wie man die Abbruchbedingung korrekt programmieren kann?
 

Icewind

Bekanntes Mitglied
hm naja so weit ich mir das überlegt hab musst du in die else bedingung schreiben das er die methode noch mal aufruft und nach dem if ein returnt....
 

Linad

Mitglied
also ich habe mir folgende Lösung erarbeitet:

Code:
private int deep;

public String calculateDecimal(double num, int radix){
        
        double mul = num * radix;
        double rest = mul - (int)mul;
        
        if (this.deep == 20){
            return(Integer.toString((int)mul));
        }

        if (num < 0.0001){
            return("");
        }

        this.deep++;

        return(Integer.toString((int)mul) + calculateDecimal(rest,radix));

    }

Jetzt brauche ich eine Klassenvariable um die Tiefe der Rekursion zu bestimmen. Der Code funktioniert.

Wenn jemand eine bessere Lösung oder Anmerkungen hat -> you are welcome
 
B

Beni

Gast
sowas?
Code:
public String calculateDecimal(double num, int radix){
        return calculateDecimal( num, radix, 0 );
}
private String calculateDecimal(double num, int radix, int deep ){
       
        double mul = num * radix;
        double rest = mul - (int)mul;
       
        if (deep == 20){
            return(Integer.toString((int)mul));
        }

        if (num < 0.0001){
            return("");
        }

        return(Integer.toString((int)mul) + calculateDecimal(rest,radix, deep+1 ));

    }

[Edit: man sollte allerdings dann auch nicht mehr die alte Variable benutzen...]
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
U Tiefe Objekte schreiben Allgemeine Java-Themen 1
C Best Practice Tiefe Kopie eines Arrays unbekannter Dimension und unbekannten Typs Allgemeine Java-Themen 4
C Methode für tiefe Kopie eines unbekannt (dimensionierten & typisierten) Feldes realisierbar? Allgemeine Java-Themen 7
D Datenstruktur für Hierarchie/Baum mit Tiefe 3 Allgemeine Java-Themen 8
B tiefe gleichheit / flache gleichheit Allgemeine Java-Themen 5
E tiefe Kopie nicht serialisierbarer Objekte Allgemeine Java-Themen 3
W Tiefe eines Knotens Allgemeine Java-Themen 3
S Tiefe Kopie einer Baumstruktur als statische Methode Allgemeine Java-Themen 8
M Verschachtelte Schleifen (unbekannte Tiefe) Allgemeine Java-Themen 3
P Rekursion Aufrufbaum Allgemeine Java-Themen 7
N rekursion mehrfach eine Methode Öffnen Allgemeine Java-Themen 4
districon Rekursion und Dynamische Programmierung Allgemeine Java-Themen 2
Zeppi Rekursion StackOverflowError Allgemeine Java-Themen 4
J Rekursion Allgemeine Java-Themen 4
Zrebna Wie kann man endgültig aus einer Rekursion ausbrechen? Allgemeine Java-Themen 14
parrot Rekursion Aufgabe Allgemeine Java-Themen 12
B Rekursion Allgemeine Java-Themen 11
X Wie mache ich hier eine Rekursion rein ? Allgemeine Java-Themen 7
J Rekursion Mergesort Allgemeine Java-Themen 10
R Rekursion Allgemeine Java-Themen 3
R Programm zur Rekursion Allgemeine Java-Themen 5
V Rekursion Allgemeine Java-Themen 2
J Denkfehler Rekursion Allgemeine Java-Themen 5
I Raute mit Rekursion "zeichnen" Allgemeine Java-Themen 7
B Rekursion Allgemeine Java-Themen 2
B Rekursion Allgemeine Java-Themen 22
B Java Sternchen ausgeben mittels Rekursion Allgemeine Java-Themen 3
Hacer Rekursion- sumOfAllNodes Allgemeine Java-Themen 5
L Rekursion Binärbaum Allgemeine Java-Themen 7
Androbin Interpreter-Fehler Probleme mit Rekursion - StackOverflowError Allgemeine Java-Themen 8
Y Rekursion Allgemeine Java-Themen 19
M Permutation ohne Wiederholung mit rekursion Allgemeine Java-Themen 4
J Rekursion oder Iteration - verkettete Listen Allgemeine Java-Themen 8
T Pascalsches Dreieck ohne array und rekursion Allgemeine Java-Themen 9
P Rekursion Allgemeine Java-Themen 9
R Threading und Rekursion führen zu “GC overhead limit exceeded” Allgemeine Java-Themen 4
W Rekursion-Probleme mit return Allgemeine Java-Themen 35
C Rekursion Fibonacci Allgemeine Java-Themen 31
T Rekursion mit While Schleife kombinieren? Allgemeine Java-Themen 4
eQuest Rekursion Dauer Allgemeine Java-Themen 6
Weiti Swingworker und Rekursion Allgemeine Java-Themen 8
L fragwürdige Rekursion Allgemeine Java-Themen 4
L Kleine Rekursion Allgemeine Java-Themen 12
M Rekursion!! Allgemeine Java-Themen 8
J Rekursion in Schleifenkonstrukt wandeln Allgemeine Java-Themen 21
R Rekursion Ablauflogik Allgemeine Java-Themen 19
M Rückwärts geführte Rekursion Allgemeine Java-Themen 3
Schandro StackOverflowError bei Rekursion verhindern Allgemeine Java-Themen 14
G Werte bei Rekursion viel höher als erwartet Allgemeine Java-Themen 3
G Rekursion - Denksport Allgemeine Java-Themen 6
S Rekursion und StackOverflow Allgemeine Java-Themen 11
P Stackoverflow in Rekursion. Bin ich schuld oder Java? Allgemeine Java-Themen 9
W kompliziertes Konstrukt von Schleifen/If/else. Rekursion? Allgemeine Java-Themen 22
S Rekursion Allgemeine Java-Themen 2
Linad Zahlensysteme -> Rekursion Allgemeine Java-Themen 4
N Frage zu einer Rekursion Allgemeine Java-Themen 4
T Verschachtelte For-Schleife gibt falschen Wert zurück, Abbruchbedingung evtl. falsch? Allgemeine Java-Themen 9
M While-Schleife schneller, solange die Abbruchbedingung nicht vom Schleifeninneren abhängt Allgemeine Java-Themen 3
G Scanner und Abbruchbedingung/Pattern Allgemeine Java-Themen 2
R Abbruchbedingung funktioniert nicht Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben