Registrierung Kalender Mitgliederliste Teammitglieder Suche Häufig gestellte Fragen Zur Startseite

Informatiker Board » Themengebiete » Theoretische Informatik » Abbruchbedingung » Antwort erstellen » Hallo Gast [Anmelden|Registrieren]

Antwort erstellen
Benutzername: (du bist nicht eingeloggt!)
Thema:
Nachricht:

HTML ist nicht erlaubt
BBCode ist erlaubt
Smilies sind erlaubt
Bilder sind erlaubt

Smilies: 21 von 33
smileWinkDaumen hoch
verwirrtAugenzwinkerngeschockt
Mit ZungeGottunglücklich
Forum Kloppebösegroßes Grinsen
TanzentraurigProst
TeufelSpamWillkommen
LehrerLOL HammerZunge raus
Hilfe 
aktuellen Tag schließen
alle Tags schließen
fettgedruckter Textkursiver Textunterstrichener Text zentrierter Text Hyperlink einfügenE-Mail-Adresse einfügenBild einfügen Zitat einfügenListe erstellen CODE einfügenPHP CODE farbig hervorheben
Spamschutz:
Text aus Bild eingeben
Spamschutz

Die letzten 10 Beiträge
eulerscheZahl

Nein.
^ macht in Java XOR.
Und du gibst nirgendwo true oder false zurück. Außerdem musst du in jedem Druchlauf 2 Ziffern miteinander vergleichen.

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
public class Main {

	public static void main(String[] args) {
		System.out.println(isPalindrom(1234321, 0, 6));
		System.out.println(isPalindrom(12344321, 0, 7));
		System.out.println(isPalindrom(12345321, 0, 7));
	}

	static int getDigit(int number, int position) {
		int factor = 1;
		for (int i = 0; i < position; i++) {
			factor *= 10;
		}
		return (number / factor) % 10;
	}

	static boolean isPalindrom(int number, int left, int right) {
		if (left >= right)
			return true;
		if (getDigit(number, left) != getDigit(number, right))
			return false;
		return isPalindrom(number, left + 1, right - 1);
	}
}
Ratte

ist das so richtig?

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public static boolean isPalindrom1(int number, int left, int right){

if (left >= right) {
return isPalindrom1(( zahl\(10^right))%10)
else
return isPalindrom1(( zahl\(10^left))%10)


	} 
 

}
eulerscheZahl

Nach Aufgabenstellung hast du die Variable position gar nicht, dafür aber right und left. Diese kannst du in die Formel gleich für position einsetzen.
Ratte

etwa so?

also für right = (zahl\10^(position+1))%10
udn für left = ( zahl\10^(position-1))%10
eulerscheZahl

Mit (zahl\10^position)%10 bekommst du eine einzelne Ziffer.
Um die Ziffer rechts daneben zu bekommen, musst du position um eins verringern, nach links musst du position erhöhen.
Ratte

Zitat:
Original von eulerscheZahl
Rekursiver Aufruf: erhöhe left, verringere right
Abbruch: left >= right


Vielen dank! smile

Also mit (zahl\10^position)%10

Kann ich von rechts nach links gehen. Aber wie bewege ich nun die position von links nach rechts?
eulerscheZahl

Rekursiver Aufruf: erhöhe left, verringere right
Abbruch: left >= right
Ratte

Danke für das attachment. Leider weiß ich trotzdessen nicht wie ich das in "quellcode" schreibe unglücklich
eulerscheZahl

Ich habe mal ein wenig rumgespielt.
Edit: das eine Bild musst du anklicken, damit sich was bewegt.

eulerscheZahl hat dieses Bild (verkleinerte Version) angehängt:
palin12344321.gif

eulerscheZahl hat dieses Bild angehängt:
palin1234321.gif

Ratte

Bei geraden ziffernzahln weiß ich es nicht. Zumindest fällt mir spontan kein mathematischer ausdruck dafür ein um den vergleich zu beschreiben. verwirrt
Es sind weitere Beiträge zu diesem Thema vorhanden. Klicken Sie hier, um sich alle Beiträge anzusehen.