Sie sind nicht angemeldet.

Matt

Fuck me, I'm famous

  • »Matt« ist der Autor dieses Themas

Beiträge: 214

Wohnort: Nähe Bodensee

Beruf: Informatikkaufmann

Danksagungen: 6

  • Nachricht senden

1

11.06.2010, 17:12

Rekursionen sind doof

Schaut mal bitte den folgenden Java Code an:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class Rektest
{
   public static void main(String[] args)
   {

       System.out.println(pot(4,3));

   } //ENDE main();


   public static int pot(int x, int y)
   {
      
       if(y <= 0)
       {
              return 1;
       }
       else
       {
              return x*pot(x,y-1);
       }

   } //ENDE pot();

} //ENDE Klasse Rektest.java


Ich check nicht wie das ganze hier abläuft. Kann mir das mal einer erklären? Also wie die Rechnung x*pot(x,y-1) genau abläuft. Ich verstehe, dass es drei Durchläufe gibt, bis eben y=0 ist. Aber dann wird 1 returned und das Endergebnis (64) wird damit multipliziert. Wenn ich anstatt return 1, return n angebe, wird 64 (4^3) mit n multipliziert. Und wo genau ist eigentlich das Zwischenergebnis? Wo liegt das? X ist ja immer 4.
Zusammengefasst:

- was passiert bei return x*pot(x,y-1) ganz genau? Nja, dass y jedes mal dekrementiert wird, ist mir auch klar ;)
- Warum wird das Ergebnis nochmal mit diesem return aus der if-Klausel multipliziert?

Für das Programm kann ich nix, ist genauso vorgegeben.

Danke euch!

gruß, java-mätt

Lesezeichen:

Forenuser - Die Foren
Findmaschine