Feedback

C# - Fakultät berechnen (rekursiv)

Veröffentlicht von am 8/4/2006
(1 Bewertungen)
Berechnet rekursiv die Fakultät einer Zahl.
public int Faculty( int n )
{
    return n == 0 ? 1 : n * Faculty( n-1 );
}
Abgelegt unter fakultät.

3 Kommentare zum Snippet

herbivore schrieb am 12/8/2006:
Endlosrekursion, wenn für n eine negative Zahl angegeben wird.
Günther Foidl schrieb am 9/24/2008:
Die iterative Variante ist besser. Zum einen schneller - weniger Overhead - und zum anderen sicherer gegen Stapelüberlauf.

private static int Fakultät(int zahl)
{
if (zahl < 0)
throw new ArgumentOutOfRangeException("Zahl darf nicht kleiner 0 sein");

int fakultät = 1;

if (zahl == 0 || zahl == 1)
fakultät = 1;
else
{
for (int i = 1; i <= zahl; i++)
fakultät *= i;
}

return fakultät;
}
Koopakiller schrieb am 10/22/2012:
Tausche das int im Methodenkopf gegen ein uint und den Rückgabewert gegen ein ulong aus. So hast du
1. kein Problem mehr mit negativen Zahlen
2. kannst größere Fakultäten verarbeiten

ich testete es mehrmals ob iterativ scheller als rekursiv ist, dem war erst so als ich mehrere tausend Berechnungen hintereinander durchführte, sonst war immer das rekursive vorne.
 

Logge dich ein, um hier zu kommentieren!

Ähnliche Snippets