Rekursive Methode

  • Themenstarter Themenstarter GästeBett
  • Beginndatum Beginndatum
G

GästeBett

Gast
Hallo nochmal,
ich hab folgende Rekursive Methode

Java:
public class Test {
   
   static int f(int n, int m) {
    if (n==0 || m==0 || m==1)
      return 2;
    else  
      return 4-2*f(n-2,m-3);
   }

   public static void main(String args[]) {
    System.out.println(f(5,16));  
  }
}

Das ergebnis beträgt -20 wenn f(5,16) aufgerufen wird.
Wie kann ich das nachrechnen weil ich den rechenweg nicht nachvollziehen kann?
 
Hallo,

also wenn du willst, ob es stimmt, musst du es entweder mit der Methode nachrechnen. Oder wenn du weiß, welche Mathematische Funktion dahinter steckt, kannst du halt diese ausrechnen und schauen ob es mit den Werten stimmt.

Gruß

dev
 
Code:
Aufruf             Ergebnis
-------------------------------
5,16                4-2*?
3,13                4-2*?
1,10                4-2*?
-1,7                4-2*?
-3,4                4-2*? 
-5,1 (m==1, also gebe hier 2 zurück) 
-3,4                4-2*2 = 0
-1,7                4-2*0 = 4
1,10                4-2*4 = -4
3,13                4-2*-4 = 12
5,16                4-2*12 = -20
 
Oder sowas
Java:
public class RecursionTest
{

   static int f(int n, int m, String indent)
   {
       System.out.println(indent+"Call n="+n+", m="+m);
       if (n==0 || m==0 || m==1)
       {
           System.out.println(indent+"For  n="+n+", m="+m+" return 2");
           return 2;
       }
       else
       {
           System.out.println(indent+"For  n="+n+", m="+m+" recursion...");
           int result = 4-2*f(n-2,m-3, indent+"   ");
           System.out.println(indent+"For  n="+n+", m="+m+" return "+result);
           return result;
       }
   }

   public static void main(String args[]) {
    System.out.println(f(5,16,""));
  }
}
 

Zurück
Oben