Vielen Dank schonmal für eine erste Antwort.
Es handelt sich bei diesen rekursiven Methoden eigentlich um theoretische Aufgaben, wo man die Methode erkennen soll, also erkennen soll was sie macht. Ich habe bereits die Lösung, kann aber halt nicht nachvollziehen weshalb.
Den Code kann ich höchstens noch übersichtlicher darstellen:
Methode berechnet den GGT:
----------------------------
import AlgoTools.IO;
public class Raetsel {
public static int frage(int a, int {
if(b == 0) return a;
return frage(b, a - b * (a/b));
}
}
Methode berechnet g hoch r:
---------------------------
public class Foo {
public static double bar(double g, int r) {
if (r < 0)
throw new IllegalArgumentException("does not work");
if (r == 0)
return 1;
else {
double w = bar(g, r / 2);
if (r % 2 != 0)
return w * w * g;
else
return w * w;
}
}
}
Methode berechnet n*n:
------------------------
public class Fraglich {
public static int methode(int n) {
if (n == 1) {
return 1;
}
int a = methode(n / 2);
a *= 4;
if (n % 2 == 1) {
a += 2 * n - 1;
}
return a;
}
}
Ich hoffe das hilft, bzw. reicht, damit mir jemand erklären kann, wie die rekursiven Aufrufe jeweils gemacht werden, wenn man z.B. in der letzten Aufgabe für den Parameter n = 4 oder so einsetzt. Oh jetzt sehe ich, dass meine veränderte Darstellung nicht übernommen wird, ich hoffe ihr könnt mir es auch so erklären, das wäre sehr nett.