Zweierpotenz

Mind_21

Mitglied
hmm also ich habe folgendes Problem
ich habe diese Methode predecessorLength : ist length eine gerade zahl , hat der vorgegebene length genau halbe lange , das habe ich verstanden und schon gemacht :) , aber das Problem liegt an der zweiten Bedingung ; ist length ungerade , hat der vorgenannter length die lange der Zweierpotenz , die gerade noch kleiner ist als length ???:L
Bz
length = 4 - 2
length = 13 - 8

kann mir vielleicht jemand mit der zweiten Bedingung helfen ?
Java:
public int predecessorLength(int length) {
			if (length%2== 0){
				return length = length/2 ;
			}
			if (length%2 !=0){
				return length = 
			}
			
		  return length ;
 
Zuletzt bearbeitet von einem Moderator:

Landei

Top Contributor
Ungetestet:
Java:
length = 1 << java.math.BigInteger.valueOf(length).bitLength()
 

Blakh

Bekanntes Mitglied
Ich würde das ganz banal mit einer while-Schleife lösen.



Java:
int ergebnis = 1;
while (ergebnis < length) {
System.out.println(ergebnis);
ergebnis = ergebnis * 2;
}

Für 13:

1
2
4
8

Weiss nicht inwieweit der Code von landei besser ist. Und ob ich das richtig verstanden habe.
 

Blakh

Bekanntes Mitglied
Wie wärs als math. Lösung mit [c](int) Math.pow((int) Math.sqrt(zahl), 2)[/c]

Falsche Lösung :) :

Für 13:
Code:
System.out.println((int) Math.pow((int) Math.sqrt(13), 2));


Was rauskommen soll:


Aber auch andersrum wird es nicht klappen:

Beispiel für 25
Code:
System.out.println((int) Math.pow(2, (int) Math.sqrt(25)));


Was rauskommen soll:


Mfg
 

faetzminator

Gesperrter Benutzer
Dann hab ich wohl die Aufgabe falsch verstanden. Es ist aber auch etwas zu viel verlangt, aussagekräftiges Deutsch kombiniert mit 2, 3 Beispielen zu verwenden :bahnhof:
 

Oben