package blatt02; public class Kaninchen extends blatt01.MiniJava{ public static void main(String[] args) { //for (int i = 0; i <= 10; i++) { // berechneGeschlechtsreifeKaninchenpaare2(i); //} int anzahl = read("Im wie vielten Monaten möchtest du die Anzahl " + "geschlechtsreifer Kaninchenpaare wissen?"); write("Im " + anzahl + ". Monat gibt es " + berechneGeschlechtsreifeKaninchenpaare(anzahl) + " geschlechtsreife Kaninchenpaare."); } /** * 2.7 a) * * Berechnet die Anzahl derzeit geschlechtsreifer (und somit noch lebendiger * und schon geborener) Kaninchenpaare nach n Monaten. * * @param n aktueller Monat * @return die Anzahl geschlechtsreifer Kaninchenpaare */ public static long berechneGeschlechtsreifeKaninchenpaare(int n) { // Fehlerbehandlung (immer gut): if (n < 1) return 0; // Anfangsannahmen für die Paare in den einzelnen Generationen: long generation_1 = 1; long generation_2 = 0; long generation_3 = 0; // Berechnung: while (n > 1) { long neugeborene = generation_1 + generation_2 + generation_3; generation_3 = generation_2; generation_2 = generation_1; generation_1 = neugeborene; n--; } // Zurückgeben: return generation_3 + generation_2 + generation_1; } /** * 2.7 b) * * Berechnet die Anzahl derzeit geschlechtsreifer (und somit noch lebendiger * und schon geborener) Kaninchenpaare nach n Monaten, wobei die zweite * Generation immer 3 neue Kaninchenpaare zur Welt bringt, während andere * Generation 2 zur Welt bringen. * * @param n aktueller Monat * @return die Anzahl geschlechtsreifer Kaninchenpaare */ public static int berechneGeschlechtsreifeKaninchenpaare2(int n) { int monat = n; // Fehlerbehandlung (immer gut): if (n < 1) return 0; // Anfangsannahmen für die Paare in den einzelnen Generationen: int generation_1 = 1; int generation_2 = 0; int generation_3 = 0; // Berechnung: while (n > 1) { int neugeborene = generation_1 + generation_2*3 + generation_3; generation_3 = generation_2; generation_2 = generation_1; generation_1 = neugeborene; n--; } //System.out.println(monat + "\t" + generation_1 + "\t" + generation_2 + "\t" + generation_3); write("Gen. 1: " + generation_1 + "\n" + "Gen. 2: " + generation_2 + "\n" + "Gen. 3: " + generation_3); // Zurückgeben: return generation_3 + generation_2 + generation_1; } }