Kleine Rekursion

Levitas

Mitglied
Servus Leute,

ich bin im Moment dabei ein bisschen mich mit Rekursion vertraut zu machen. Habe auch schon die geläufigen Rekursionen durchgemacht und eigentlich gut verstanden (Fibonacci, Hanoi, Quersumme ...).
Ich habe mir nun folgende Aufgabe gestellt:

Eine Methode
Java:
static boolean istNur2 (int n)
soll true liefern, wenn eine Ziffernfolge ausschliesslich aus 2en besteht. Also z.B. 222 oder 22. Wenn z.B. 252 oder so kommt soll als Rückgabe false erscheinen.

Hab auch schon mir einen kleinen Algorithmus geschaffen, der aber noch nicht ganz funktioniert. Das Problem ist, wenn eine "richtige" zahl kommt (z.B. 222) liefert es zwar true, wenn aber eine "falsche" zahl kommt wie 2345 kommt ein java.lang.StackOverflowError (was ja denke ich mal auf ne Endlosschleife oder sowas in der Art hinweist).

Hier mal mein Code:

Java:
public class RekursionNur2 {
	
	
	static boolean istNur2 (int n)
	{	
		//wenn n den wert 2 hat
		if (n == 2)
			return true;
		
		//wenn n nicht 2 ist und noch einstellig ist
		else if(n != 2 && n < 10)
			return false;
		
		//wenn n zweistellig ist
		else if(n > 9){
			int result = n%10;
			if(result == 2){
				return istNur2(n);
			}
			else
				return false;
		}
		return true;		
	}
	
	
	public static void main(String[] args)
	{
		int n = 2245;
		System.out.println(istNur2(n));
	}

}

Ich hoff ihr findet das Problem :)

Grüße

Levitas
 

Sonecc

Gesperrter Benutzer
bei mir läuft dein Code nur bei einer richtigen Zahl (getestet 2222) nicht richtig durch ;)

Ich denke es liegt daran, dass du die Zahl unverändert wieder an die Methode zurück gibst.
Dadurch macht das Programm bei jedem aufruf nichts neues, es wird immer 2222 getestet
 
S

SlaterB

Gast
Zeile 18: return istNur2(n);
mit unveränderten Parameter n kann ja nur exakt dasselbe nochmal rechnen,
wenn es je dazu kommt, ist eine Endlosschleife sicher
 

eRaaaa

Top Contributor
also ich denke, es wird eher andersherum sein ;D false zeigt er dir an, true aber nicht.

problem ist hier:
Java:
            int result = n%10;
            if(result == 2){
                return istNur2(n);
            }

du rufst die methode mit dem gleichen n auf, welches du auch vorher schon der methode übergeben hast ;D

und noch als kleiner zusatz:
Java:
else if(n != 2 && n < 10)
das != 2 brauchst du eig. nicht abfragen, das muss es ja sein, weil sonst würde er garnicht zum else if gelangen *g*

/edit: lahme ente ^^
 

Levitas

Mitglied
lol ich sitz voll auf der leitung...

also nehmen wir mal an ich hab die zahl 132:

wenn die letzte Stelle auf ihre Richtigkeit überprüft worden ist und in diesem Fall true ist und dann wieder die Rekursion wieder weitergeht muss ja 13 weiterüberprüft werden. Also 13 muss der Methode wieder übergeben werden. Aber durch welche Operation bekomm ich denn 13? :bahnhof:

Ich lieg doch soweit richtig oder?
 

Sonecc

Gesperrter Benutzer
n/10 statt n übergeben

aus 132 / 10 = 13,2 macht Java nämlich (wegen int) dann 13

da war ich dann zu langsam^^
 
J

JohannisderKaeufer

Gast
Wenn man den Programmablauf etwas umsortiert, kann man sich einige if-Abfragen sparen.

Java:
public class Main {

	public static boolean nurZweier(int n) {
		if (n < 10) {
			return n == 2;
		} else {
			int zehntel = n / 10;
			return nurZweier(n - (zehntel*10)) && nurZweier(zehntel);
		}
	}

	public static void main(String[] args) {
		int[] zahlen = {2,22,222,2222,22222,21,1,0,4,212,211,2112};
		for(int i:zahlen){
			System.out.println(i+" "+nurZweier(i));
		}
	}
}
 

Landei

Top Contributor
Wie wäre es damit:
Java:
    public static boolean nurZweier(int n) {
       return n % 10 == 2 && (n < 10 || nurZweier(n / 10));
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N kleine Kommazahlen erscheinen plötzlich Allgemeine Java-Themen 19
T Kniffel: kleine Straße Allgemeine Java-Themen 6
I GUI für kleine Pop-Ups unter Windows Allgemeine Java-Themen 1
S Wie kann ich eine kleine Stelle in meinem Code mit multiplen Threads abarbeiten..? Allgemeine Java-Themen 20
Soloeco Kleine Optimierungsfrage Allgemeine Java-Themen 6
RalleYTN Classpath Nur ne kleine Frage zur MANIFEST.MF Allgemeine Java-Themen 4
vandread Kleine Generics Aufgabe aus einer Prüfung... wie ist das gemeint? Allgemeine Java-Themen 6
Y Kleine Frage zu String.split Allgemeine Java-Themen 3
W Kleine Frage zu Null-Pinter-Exception Allgemeine Java-Themen 21
D Kleine Frage zum öffnen eines Fensters Allgemeine Java-Themen 10
A Drucken auf kleine Formate Allgemeine Java-Themen 2
O kleine Fragen eines Anfängers Allgemeine Java-Themen 2
musiKk Best Practice für kleine Variationen in gegebenen Modellklassen Allgemeine Java-Themen 11
nrg Kleine Hilfe mit RegEx Allgemeine Java-Themen 2
B Kleine Frage zu Modellierung (Videothek) Allgemeine Java-Themen 2
J Eine kleine Aufnahme mit Java Allgemeine Java-Themen 3
J Kleine Hilfe zum Framework Click Allgemeine Java-Themen 2
Lulumann6 kleine frage zu KeyEvents Allgemeine Java-Themen 10
G Kleine Frage zu Vectoren Allgemeine Java-Themen 2
D kleine SQL-Hilfe benötigt: not a single-group group function Allgemeine Java-Themen 4
T Designfrage: Viele, kleine Objekte Allgemeine Java-Themen 13
M Schnell kleine Hilfe gesucht! Allgemeine Java-Themen 3
T kleine mp3 Lib Allgemeine Java-Themen 17
K Mit Java kleine Freeware Programme erstellen. Geht das? Allgemeine Java-Themen 16
L kleine frage zum rechner Allgemeine Java-Themen 7
V kleine Threadfrage Allgemeine Java-Themen 10
T Kleine Verständnisfrage zu Stringbuffer Allgemeine Java-Themen 2
K Kleine Exception Frage ! Allgemeine Java-Themen 3
B Wie heißt dieser kleine Typ links oben? Also dieses JavaVieh Allgemeine Java-Themen 5
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
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 Tiefe der Rekursion als Abbruchbedingung Allgemeine Java-Themen 6
Linad Zahlensysteme -> Rekursion Allgemeine Java-Themen 4
N Frage zu einer Rekursion Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben