Rekursion, Anzahl von Stellen ausgeben

AS

Mitglied
Hallo,

ich möchte mittels Rekursion die Anzahl an Stellen einer Zahl ausgeben. Das funktioniert prinzipiell auch, allerdings habe ich drei Fragen. Hier erst mal mein "Programm":

Java:
import java.util.*;
public class Ziffern {
	static int a=0;
	public static void ausgeben(int b){ b=b/10;
	if (b>=10 || b<=-10){
		Ziffern.ausgeben((int)b);
		a=a+1;
		System.out.println(a);
	}
	else {
		a=2;
	}
		}

}


public class application {

	public static void main(String[] args) {
		
		System.out.println("Bitte geben Sie eine Zahl ein!");
		Scanner scanner=new Scanner(System.in);
		int cool= (int) scanner.nextDouble();
		
		Ziffern.ausgeben(cool);
		// TODO Auto-generated method stub

	}

}

Jetzt habe ich aber drei Fragen:

1.) Kann man das so wirklich als Rekursion bezeichnen. Ich bin mir nicht sicher, da ich eine statische Variable als Zähler benutze.

2.) Muss ich in der Klasse "Ziffern" die Methode auch aufrufen, indem ich Ziffern.ausgeben() verwende ?

3.) Wie kriege ich es hin, dass mir nicht jeder Zwischenschritt des Zählers ausgegeben wird. Also wie kriege ich es hin, dass es mir zum Beispiel nicht "2,3,4,5" ausgibt, sondern lediglich eine "5" am Ende für eine 5-stellige Zahl. Das soll ja mittels Rekursion geschehen. Ich habe dazu keine wirkliche vernünftige Idee.

Vielen Dank schon mal im Voraus für eure Hilfe,

viele Grüße, AS
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Normalerweise werden in Rekursion die Zähler weitergereicht aber Rekursiv bedeutet "sich selbst aufrufend" also kann man das schon so nennen.

Das musst du nicht. Das kannst du tun aber das musst du nicht.

Du baust eine Überprüfung ein, ob die Zahl zuende ist und tust den Sysout in diese Überprüfung rein. Dann müsstestdu nur jedes Mal überprüfen, ob die Zahl keine Stellen mehr hat.
Oder du gibst einen Wert zurück bei dieser Rekursion und lässt den Aufrufer den Wert ausgeben, was ich für eleganter halte. ;)
 
Zuletzt bearbeitet:

Joose

Top Contributor
Normalerweise werden in Rekursion die Zähler weitergereicht aber Rekursiv bedeutet "sich selbst aufrufend" also kann man das schon so nennen.

Bei einer Rekursion reicht es wenn eine Methode sich selber nochmals aufruft. Was als Parameter mitgegeben wird ist irrelevant. Da können Liste von Objekten sein ein einzelnes komplexes Objekt oder aber auch primitive Datentypen.

danke für deine Antwort. Ich verstehe nur nicht genau, was du mit "Aufrufer" hier meinst:

Kannst du das nochmal kurz erklären?

Deine Methode "ausgeben(int)" kannst du so umschreiben das diese Methode ein "int" zurückliefert.
Und anstatt des "System.out.println(a)" gibst du einfach den Rückgabewert des rekursiven Aufrufes zurück ;-)
In der main-Methode gibst du das Ergebnis dann auf der Konsole aus

Java:
public static void main(String[] args){
   System.out.println(Ziffern.ausgeben);
}

public class Ziffern {
   public static int ausgeben(int b) { 
      if(BEDINGUNG ob Rekursion weiter gemacht werden soll) {
        return Ziffern.ausgeben((int)b);
      } else {
         return 2;
      }
}

Achtung dieser Code ist nur Pseudocode. Es richtig auf deinen Code anzuwenden bleibt dir überlassen.
Es soll nur gezeigt werden wie Gucky es gemeint hat (und ich es verstanden habe)
 

AS

Mitglied
Hi Joose,

ich habe das jetzt folgendermaßen gemacht und es scheint auch zu funktionieren. Ich glaub, dass es jetzt auch so ist, wie ihr es gemeint habt :)

Java:
import java.util.*;
public class application {

	public static void main(String[] args) {
		
		System.out.println("Bitte geben Sie eine Zahl ein!");
		Scanner scanner=new Scanner(System.in);
		int cool= (int) scanner.nextDouble();
		
		System.out.println(Ziffern.ausgeben(cool));
		// TODO Auto-generated method stub

	}

}


public class Ziffern {
	
	public static int  ausgeben(int b){ b=b/10;
	if (b>=10 || b<=-10){
		
		
		
		return 1+Ziffern.ausgeben((int)b);
		
	}
	else {
		return 2;
	}
		
	}

}

Danke für eure Hilfe,

Gruß AS
 

stg

Top Contributor
Das Prinzip ist richtig, aber deine Methode #ausgeben() ist immer noch fehlerhaft. Die Zahl 0 hat z.B. nur eine Ziffer, nicht zwei...
 

Joose

Top Contributor
ich habe das jetzt folgendermaßen gemacht und es scheint auch zu funktionieren. Ich glaub, dass es jetzt auch so ist, wie ihr es gemeint habt :)

Java:
	Scanner scanner=new Scanner(System.in);
	int cool= (int) scanner.nextDouble();

	public static int  ausgeben(int b){ b=b/10;
	if (b>=10 || b<=-10){
		return 1+Ziffern.ausgeben((int)b);		
	} else {
		return 2;
	}

Ja das schaut gut aus :)

Fragen:
Warum rufst du die "nextDouble()" Methode vom Scanner auf wenn du sowieso in einen int castet? Verwende to gleich "nextInteger()".
In der Methode "ausgeben" castest du beim Aufruf von "ausgeben das b jedesmal zu einem int. Was sollte es denn sonst sein? b ist ja der Methoden parameter und schon ein int. Dieser cast ist unnötig.

Anmerkung:
Wenn du Code im Forum postet entferne doch bitte unnötige Leerzeilen. Und probiere den Code halbwegs gut zu formatieren -> vor allem die Einrückungen!

Nichts ist störender als wenn zwischen 2 Anweisungen plötzlich X Leerzeilen zu finden sind bzw. eine Anweisung einfach mal so 10 Tabs weiter eingerückt ist als nötig usw.
 
Zuletzt bearbeitet:

AS

Mitglied
Hallo stg und Joose,

danke für eure Hilfe. Hab jetzt alle Fehler behoben und es läuft :)

Das mit dem Code geht klar. Ich werde probieren es in Zukunft besser zu machen.

Gruß AS
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Verstehe Rekursion nicht ganz Java Basics - Anfänger-Themen 7
P Frage zu Rekursion und Backtracking Java Basics - Anfänger-Themen 2
DiyarcanZeren Rekursion in Java Java Basics - Anfänger-Themen 5
M Variablen Rekursion mit 2 Parameteren Java Basics - Anfänger-Themen 4
sserio Rekursion größten Primfaktor finden funktioniert nicht Java Basics - Anfänger-Themen 8
M Lösungsweg Rekursion Java Basics - Anfänger-Themen 1
C StackOverflow bei Rekursion Java Basics - Anfänger-Themen 7
D Rekursion - Ich raffs nicht Java Basics - Anfänger-Themen 16
N Methoden Rekursion mit Kreisen Java Basics - Anfänger-Themen 7
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
J Rekursion Java Basics - Anfänger-Themen 22
T Rekursion Programmierverständnis Java Basics - Anfänger-Themen 12
K Rekursion: Rechenmauer mit Array erstellen Java Basics - Anfänger-Themen 17
K Rekursion einer Zahlenfolge (Ab- und Aufzählung) Java Basics - Anfänger-Themen 6
Zeppi Rekursion Java Basics - Anfänger-Themen 15
V Backtracking und Rekursion Java Basics - Anfänger-Themen 15
L REKURSION Java Basics - Anfänger-Themen 13
Kirby.exe Rekursion Java Basics - Anfänger-Themen 7
N for Schleife durch Rekursion ersetzen Java Basics - Anfänger-Themen 6
X Rekursion Java Basics - Anfänger-Themen 3
H Rekursion Java Basics - Anfänger-Themen 2
D Erste Schritte Rekursion Java Basics - Anfänger-Themen 13
M Rekursion Tage Ansteckung gesamte Bevölkerung Java Basics - Anfänger-Themen 15
M Java Rekursion Java Basics - Anfänger-Themen 9
G Java Rekursion Java Basics - Anfänger-Themen 5
J Rekursion Klausur Aufgabe Java Basics - Anfänger-Themen 2
N Rekursion Java Basics - Anfänger-Themen 18
M Verständnisproblem der Rekursion bei Arrays Java Basics - Anfänger-Themen 8
X Rekursion Rätsel Java Basics - Anfänger-Themen 4
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
W Rekursion Java Basics - Anfänger-Themen 0
D Konsolenausgabe Zahlenfolge Rekursion Java Basics - Anfänger-Themen 3
J Ping Pong Methode mit Rekursion Java Basics - Anfänger-Themen 1
N Rekursion Java Basics - Anfänger-Themen 1
B Rekursion Basic Java Basics - Anfänger-Themen 15
O Rekursion Mergesort Java Basics - Anfänger-Themen 18
G Rekursion Java Basics - Anfänger-Themen 20
M Rekursion Java Basics - Anfänger-Themen 7
F Hilfe bei Rekursion... Java Basics - Anfänger-Themen 4
A Mit Rekursion Zufallszahlen erstellen und größte finden Java Basics - Anfänger-Themen 5
B Rekursion Wurzel Java Basics - Anfänger-Themen 39
O Rekursion ordentlich aufschreiben Java Basics - Anfänger-Themen 2
B Rekursion verstehen Java Basics - Anfänger-Themen 4
O Rekursion Java Basics - Anfänger-Themen 2
E Rekursion verstehen. Java Basics - Anfänger-Themen 4
E Rekursion Kisten befüllen Java Basics - Anfänger-Themen 10
E Rekursion verstehen Java Basics - Anfänger-Themen 2
O Rekursion, String Java Basics - Anfänger-Themen 8
N Invertierte Rekursion??? Java Basics - Anfänger-Themen 5
M Bitte um Hilfe bei Quellcode (Rekursion) Java Basics - Anfänger-Themen 6
T Rekursion Warum bricht meine Funktion nicht ab Java Basics - Anfänger-Themen 4
A Hilfe bei Rekursion,Ich verstehe nicht,wie funktioniert die Rekursion in der Methode "walk" Java Basics - Anfänger-Themen 13
L Rekursion im Baum Java Basics - Anfänger-Themen 9
E Pfade eines Baums angeben ohne Rekursion Java Basics - Anfänger-Themen 20
L Rekursion Baumknoten Java Basics - Anfänger-Themen 8
L Rekursion größtes Zeichen Java Basics - Anfänger-Themen 8
L Rekursion Modulo Java Basics - Anfänger-Themen 7
I Rekursion Java Basics - Anfänger-Themen 11
H Rekursion Java Basics - Anfänger-Themen 7
N Methoden zur Rekursion (catalansche Zahlen) Java Basics - Anfänger-Themen 4
S Frage zu Rekursion... Java Basics - Anfänger-Themen 15
N Java catalansche Zahlen (Rekursion) Java Basics - Anfänger-Themen 5
S Noch eine Frage zur Rekursion... Java Basics - Anfänger-Themen 11
S Frage zu einer Rekursion Java Basics - Anfänger-Themen 15
F Methoden Abbruchbedingung bei Rekursion Java Basics - Anfänger-Themen 2
Z Rekursion Primzahlen Java Basics - Anfänger-Themen 1
K Rekursion Verständnisfrage Java Basics - Anfänger-Themen 19
L Methoden Rekursion gibt alten Wert wieder Java Basics - Anfänger-Themen 37
M Rekursion Minimums Suche Java Basics - Anfänger-Themen 12
J Rekursion Java Basics - Anfänger-Themen 5
F Aufgabe Rekursion Binärer Baum Java Basics - Anfänger-Themen 15
N Rekursion Java Basics - Anfänger-Themen 2
B Rekursion - Übung Java Basics - Anfänger-Themen 2
B Problem beim grundsätzlichen Verständnis bei Rekursion mit 2-dimensionalen Array Java Basics - Anfänger-Themen 6
P Rekursion Java Basics - Anfänger-Themen 19
G Rekursion Beispiel Java Basics - Anfänger-Themen 3
M Rekursion schreiben Java Basics - Anfänger-Themen 16
A Rekursion Funktion in eine Iterativ Funktion umwandeln Java Basics - Anfänger-Themen 9
T Array Rekursion Java Basics - Anfänger-Themen 1
B lineare und schlichte Rekursion Java Basics - Anfänger-Themen 1
A Rekursion Java Basics - Anfänger-Themen 2
B Rekursion Java Basics - Anfänger-Themen 3
A Rekursion stoppt an der falschen Stelle Java Basics - Anfänger-Themen 4
A Lineare Rekursion Java Basics - Anfänger-Themen 6
P Hilfe zur Rekursion? Java Basics - Anfänger-Themen 2
B Rekursion Schneeflocke - Kurze Frage zur Methode Java Basics - Anfänger-Themen 11
L Rekursion Java Basics - Anfänger-Themen 4
S Rekursion Rückgabe - Türme von Hanoi Java Basics - Anfänger-Themen 16
kilopack15 Rekursion und Schleifen Java Basics - Anfänger-Themen 27
E Rekursion Java Basics - Anfänger-Themen 10
G rekursion nicht verstanden Java Basics - Anfänger-Themen 5
K Rekursion-Verständnisfrage Java Basics - Anfänger-Themen 4
E Methoden String wird in Rekursion nicht überschrieben Java Basics - Anfänger-Themen 2
T 2fach Rekursion. Java Basics - Anfänger-Themen 4
N Rekursion mit if-Anweisung Java Basics - Anfänger-Themen 10
K Methoden Zahlensysteme umwandeln mittels Rekursion Java Basics - Anfänger-Themen 5
H Rekursion Binäre Suche Java Basics - Anfänger-Themen 2
P Methoden Primzahltest mit Rekursion Java Basics - Anfänger-Themen 3
C Rekursion überführen in eine normale methode Java Basics - Anfänger-Themen 1
M Methoden Rekursion nachvollziehen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben