Seite 1 von 1

Rekursive Funktion

Verfasst: Mo Dez 15, 2014 2:12 pm
von harun
Hallo Leute,

versuche seit langem diese Aufgabe zu verstehen. Dieser folgender Code :

Code: Alles auswählen

int f(int a, int *b){
       if (a <= o) return b[0];
       printf("a = %d, *b = %d\n", a, *b);
       return a * f(a-1, b+1);
}

void main (void) {
      int Vektor[] = {2,3,5,7,11};
      printf("Ergebnis = %d\n", f(3, &(Vektor[0])));
}
liefert folgende Ausgabe aus:

Code: Alles auswählen

a = 3, *b = 2
a = 2, *b = 3
a = 1, *b = 5   --> bis hierhin verstehe ich es, aber woher kommt die 42 ???
Ergebnis = 42
Brauche wieder mal eure HILFE!! :cry:

Edit by Xin: Code-Tages hinzugefügt

Re: Rekursive Funktion

Verfasst: Mo Dez 15, 2014 2:19 pm
von nouseforname
42 ist doch DIE Antwort auf alle Fragen ;)

sry, der musste dein....

Re: Rekursive Funktion

Verfasst: Mo Dez 15, 2014 2:26 pm
von harun
Warum hat b[0] den Wert 42 ?

Re: Rekursive Funktion

Verfasst: Mo Dez 15, 2014 3:32 pm
von Xin
harun hat geschrieben:Warum hat b[0] den Wert 42 ?
Hat es nicht. Die Funktion ruft sich rekursiv auf und multipliziert die Ergebnisse. Das letzte Element dieser Produktreihe ist ist b[0].