Implementieren Sie eine Funktion, die in einem zweidimensionalen Zahlenfeld, das Maximum aller dieser Zahlen findet.
Achten Sie (je nach Programmiersprache) auf Grenzfälle. Zum Beispiel eine leere Matrix, asymmetrische Felder oder ähnliches.
Implementieren Sie eine Funktion, die in einem zweidimensionalen Zahlenfeld, das Maximum aller dieser Zahlen findet.
Achten Sie (je nach Programmiersprache) auf Grenzfälle. Zum Beispiel eine leere Matrix, asymmetrische Felder oder ähnliches.
Gegeben sei folgende rekursive definierte Folge:
Diese Folge konvergiert gegen die Quadratwurzel von 2. Die Folge ist ein Beispiel für ein allgemeines Halbierungsverfahren zur Bestimmung der Quadratwurzel einer Zahl.
Implementieren Sie jeweils eine rekursive und nicht rekursive Methode, um den Wert der Folge näherungsweise zu berechnen.
Gegeben sei folgende geometrische Reihe (die Summe der Kehrwerte aller 2er-Potenzen):
Implementieren Sie ein Programm, mit dem Sie überprüfen, ob diese Reihe – vermutlich – konvergiert. Falls die Reihe konvergent ist: gegen welchen Wert konvergiert sie?
Schreiben Sie ein Programm, das 6 zufällige Zahlen aus dem Bereich 1 bis 49 auf dem Bildschirm ausgibt (Lotto 6 aus 49). Es dürfen dabei keine Zahlen doppelt vorkommen.
Bei Algorithmen, die nach dem Teile-und-Beherrsche-Prinzip vorgehen oder bei Halbierungsverfahren, muss meist die Mitte eines Bereichs (eines Felds) berechnet werden. Der Bereich ist oft durch seine linke untere und rechte obere Grenze definiert. Dies sieht dann meist so aus:
int mitte = (links + rechts) / 2;
Diese Berechnung funktioniert in Java und anderen Programmiersprachen nicht immer. Was passiert, wenn die rechte Grenze sehr gross wird und der Bereich sich sehr weit rechts befindet? Wie muß die Mitte in Java berechnet werden, damit in jedem Fall das Ergebnis der Berechnung stimmt?
Dieser Fehler findet sich häufig in Lehrbüchern aber auch in Programmbibliotheken. In der Java-Version 1.6 wird in der Klasse Arrays die Mitte für die Binärsuche wie folgt berechnet (dabei ist aus Geschwindigkeitsgründen die Division durch 2 durch einen Rechts-Shift ersetzt):
int mid = (low + high) >>> 1;