Rekursive Methode - Ziffern einer Zahl ausgeben

Jendara

Neues Mitglied
Hallo zusammen,

ich sitz seit gestern an einem ehemaligen Testbeispiel, das ich zur Übung durchmachen will, verzweifel aber langsam daran und hoffe daher auf eure Unterstützung.

Aufgabe ist folgende:
Implementieren Sie eine rekursive Methode: static void print(int x) { ...}
welche die Ziffern einer positiven Zahl x am Bildschirm ausgibt. Wenn x aus n Ziffern besteht, sollen zuerst die ersten n-1 Ziffern ausgegeben werden und anschließend die letzte Ziffer.
Hinweis: Die letzte Ziffer kann mit der Modolo-Operation abgespalten werden.

Bin beim Tippen hier gerade draugekommen, dass ich versehentlich eine int Methode geschrieben hab, dass aber eigentlich eine void Methode gefragt ist; leider bekomm ich es damit noch weniger hin, denn bei void kann ich doch keine returns nutzen ... arrr -.- Rekursion ist echt nicht einfach ...

Ausgaben hab ich noch keine drin, weil ich bei den Returns keine machen kann und wenn ich die innerhalb von if oder else setze, dann gibt er erst recht die falsche Reihenfolge aus. :-/

Hier meine bisherigen Zeilen:

Java:
package tests;

public class Recursion1 {

    public static void main(String[] args) {
        int x = 1234;
        print(x);
    }
  
    public static int print(int x) {
        if (x > 9) {
            int y = x % 10;
            return print(x/10)*10 + y;
        } else {
            //Out.print(x);
            return x;
        }
    }
}


Liebe Grüße
Jendara
 
Trick bei der Aufgabe ist, sich von hinten nach vorne vorzuarbeiten und sich dabei immer das letzte Zeichen zu merken. Wenn man vorne angekommen ist, gibt man die Zeichen dann praktisch rückwärts wieder aus:

Java:
public class Recursion1 {

    public static void main(String[] args) {
        int x = 1234;
        print(x);
    }

    public static void print(int x) {
        //letztes Zeichen ermitteln
        int lastDigit = x % 10;

       // Unterstes Rekursionslevel erreicht -> Nach oben gehen und Zahlen von vorne nach hinten ausgeben
        if (x == 0) {
            return;
        } else {
            // Zeichen übrig -> Rekursiv nach vorne arbeiten
            print(x / 10);
        }
        //Zeichen ausgeben
        System.out.println(lastDigit);
    }
}
 
Danke für die Antwort!

Hm, offenbar hab ich auch einfach die Aufgabe falsch verstanden.
"Wenn x aus n Ziffern besteht, sollen zuerst die ersten n-1 Ziffern ausgegeben werden und anschließend die letzte Ziffer."
Das hab ich interpretiert in:
x hat in meinem Fall 4 Ziffern. Er soll in diesem Fall die Zahl 3, dann 2, dann 1 und dann erst 4 ausgeben.

Aber, das war offenbar ein kompletter Denkfehler XD.

Danke nochmal, so hab ich's jetzt kapiert!

LG Jendara
 

Zurück
Oben