2016-10-26 5 views
-2

Ich habe dieses Stück Code gefunden und ich versuche herauszufinden, wie es funktioniert, aber ich verstehe den Teil nach der Rückkehr Aussage nicht. Kann jemand das erklären? DieseWie funktioniert diese Rücksendung?

int f(int y) 
{ 
    return (y<=1)?1:y*f(y-1); 
} 
+9

lesen Sie über bedingte oder ternäre Operatoren. –

+1

Es ist eine rekursive Funktion. –

+0

Fibonacci oder so? –

Antwort

4

:

int f(int y) 
{ 
    return (y<=1) ? 1 : y*f(y-1); 
} 

entspricht dies:

int f(int y) 
{ 
    if(y <= 1) 
    { 
    return 1; 
    } else 
    { 
    return y*f(y-1); 
    } 
} 

die Ihnen inzwischen klar sein sollte, dass es eine rekursive Funktion, die The ternary (conditional) operator in C verwendet.

Der ternäre Operator hat diese allgemeine Form:

Zustand? a: b

wo, wenn condition in Wahre auswertet, dann wird a ausgeführt werden, sonst b.

+0

Entfernen Sie die Klammern um '(Zustand)'. Sie sind nicht Teil der Syntax. –

+0

Danke @PaulOgilvie, es fühlte sich nicht richtig an, ehrlich zu sein! :) – gsamaras

+0

Auch (nur jetzt sehen): entfernen Sie die ';'. (';' ist ein Anweisungs-Terminator und wandelt einen Ausdruck in eine Anweisung um, aber dies ist nur ein Ausdruck, also _no_ ';') –

Verwandte Themen