Rekursion in Java-Erklärung anhand eines Beispiels

Hallo zusammen,
ich sitze seit Minuten über 2 Aufgaben, die ich zur Übung lösen soll.
Die Aufgabenstellung lautet: Betrachten Sie das folgende Java-Programm und geben Sie an, was das Programm ausdruckt.

public class Aufgabe1
{
public static void main(String[] args)
{
System.out.println("f = "+f(2345,1234));
}
public static int f(int n, int m)
{
if (n%m == 0) return 0;
return 2*f(n-1, m-1);
}
}

public class Aufgabe2
{
public static int f(int n)
{
if (n

Okay, schauen wir uns die Funktion f einmal an:

public static int f(int n, int m)
{
if (n%m == 0) return 0;
return 2*f(n-1, m-1);
}

sie nimmt zwei ganze Zahlen, und schaut ob die erste durch die zweite ohne rest teilbar ist, wenn ja wird 0 zurückgegeben, sonst zwei mal das resultat des rekursiven aufrufs mit beiden zahlen um 1 reduziert. Ohne wirklich nachzurechnen kann man sagen dass die Bedingung irgendwann zutreffen muss, und zwar spätestends wenn m eins ist. Der letzte rekursive Aufruf wird also in jedem fall 0 zurückliefern. Diese 0 wird nun für jeden Rekursionsschritt mal zwei genommen und an die darüberliegende „f“ zurückgegeben, am Ende dieser Kette verbleibt also 0, was auch ausgegeben wird

Zu Aufgabe 2:

public static int f(int n)
{
if (n[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]