Private Function FakIter(ByVal n As Integer) As Integer
Dim Temp As Integer = 1 'die Fakultät von 0 als Ausgangspunkt
Dim Crnt As Integer = 0 'zurzeit berechnen wir die Fakultät von 0 (Crnt = Current = zurzeit)
Do While Crnt < n 'die gewünschte Fakultät ist noch nicht erreicht
Crnt += 1 'wir berechnen die nächsthöhere Fakultät
Temp *= Crnt 'Berechnung der nächsthöheren Fakultät
'Temp enthält die aktuelle Fakultät (i-1)!, Crnt enthält i
Loop
Return Temp 'nach der Schleife liegt auf Temp die gewünschte Fak. vor
End Function
Code:
Private Function FakRek(ByVal n As UInteger) As UInteger
If n = 0 Then Return 1 'Rekursionsanfang
Return n * FakRek(n - 1) 'Rekursionsschritt
End Function
nur leider bekomm ich bei größeren Zahlen (zB 32) einnen Error (Overflow Exception) und denn steht zur Fehlerbehebung da, dass ich nicht durch 0 teilen soll.. Bei kleinen Zahlen funktioniert es. _________________ http://sollniss.1x.to/
Marduk_ « Moderator »
Anmeldedatum: 17.06.2007 Beiträge: 389
Verfasst am: 20.04.2008, 16:25
Integer ist nicht für solch große Zahlen ausgelegt, für solch große Zahlen kannst du Decimal, Double oder Object nehmen. Wobei du dann bei extrem großen Zahlen ein langsamere Berechnung hast. _________________