Rekursive Funktion

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
harun
Beiträge: 6
Registriert: So Dez 07, 2014 6:31 pm

Rekursive Funktion

Beitrag von harun » Mo Dez 15, 2014 2:12 pm

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

nouseforname
Beiträge: 236
Registriert: Do Feb 10, 2011 6:31 pm

Re: Rekursive Funktion

Beitrag von nouseforname » Mo Dez 15, 2014 2:19 pm

42 ist doch DIE Antwort auf alle Fragen ;)

sry, der musste dein....

harun
Beiträge: 6
Registriert: So Dez 07, 2014 6:31 pm

Re: Rekursive Funktion

Beitrag von harun » Mo Dez 15, 2014 2:26 pm

Warum hat b[0] den Wert 42 ?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Rekursive Funktion

Beitrag von Xin » Mo Dez 15, 2014 3:32 pm

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].
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten