Seite 1 von 2

Verfasst: Sonntag 15. Juni 2008, 10:39
von sma
Sagt, mal: selbst, wenn man "ergbnis" richtig schreiben würde, die ursprüngliche Funktion ist doch nur eine komplizierte Variante von

Code: Alles auswählen

def fak(n): return 1
Will sagen: Der Algorithmus ist falsch abgeschrieben.

Stefan

Verfasst: Sonntag 15. Juni 2008, 12:02
von HWK
@sma: Ja, genau!
birkenfeld hat geschrieben:Sehr gut. Nächste Aufgabe: Erweiterung auf n! = Γ(n+1) :D

Code: Alles auswählen

from scipy.special import gamma
def fac(n):
	return gamma(n + 1)
:wink:
MfG
HWK

Verfasst: Sonntag 15. Juni 2008, 14:30
von mitsuhiko
audax hat geschrieben:Aber ich hab grad nur Python2.4 zur Hand und das kann das inline if-else nicht :(
Geht trotzdem :-)

Code: Alles auswählen

from operator import mul
fak = lambda n: (n == 0 and (1,) or reduce(mul, xrange(1, n + 1)))[0]

Verfasst: Sonntag 15. Juni 2008, 15:21
von birkenfeld
Das Tupel und [0] sind aber falsch da. :)

Verfasst: Sonntag 15. Juni 2008, 15:24
von mitsuhiko
Richtig. Fixed :-)

Code: Alles auswählen

from operator import mul
fak = lambda n: (n == 0 and (1,) or (reduce(mul, xrange(1, n + 1)),))[0]

Verfasst: Sonntag 15. Juni 2008, 15:32
von birkenfeld
Ich versteh immer noch nicht wozu du da ein Tupel brauchst...

Verfasst: Sonntag 15. Juni 2008, 15:40
von mitsuhiko
Weil ich blöd bin. Hab da ein 1 für eine 0 gedacht :oops:

Verfasst: Sonntag 15. Juni 2008, 15:46
von birkenfeld
In dem Fall hätte ich

Code: Alles auswählen

fak = lambda n: n > 0 and reduce(mul, xrange(1, n + 1))
vorgeschlagen, aber das fällt wohl unter Cheating :)