AW: [Python-de] Rekursiver Funktionsaufruf

Rainer Fischbach fischbach at ecs-gmbh.de
Fri Jun 22 15:01:37 EDT 2001


man kann die Funktion selbst als Argument mitgeben. Z. B. so:


def ar():
    def f(i, rf):
        if i<1: return 1
        return i*rf(i-1, rf)
    print f(10, f)


-----Ursprüngliche Nachricht-----
Von: python-de-admin at starship.python.net
[mailto:python-de-admin at starship.python.net]Im Auftrag von Rene
Liebscher
Gesendet: Freitag, 22. Juni 2001 13:41
An: python-de at starship.python.net
Betreff: [Python-de] Rekursiver Funktionsaufruf


Hallo,

Wie kann man rekursive Funktionen schreiben, die
nur innerhalb einer anderen Funktion bekannt sind ?
(also local fuer diese Funktion)

Beispiel:

def a():
    def f(i):
        if i<1: return 1
        return i*f(i-1)
    print f(10)

a()

bringt als Fehler
Traceback (most recent call last):
  File "C:\Programme\Python20\Pythonwin\pywin\framework\scriptutils.py",
line 301, in RunScript
    exec codeObject in __main__.__dict__
  File "C:\temp\Script1.py", line 7, in ?
    a()
  File "C:\temp\Script1.py", line 5, in a
    print f(10)
  File "C:\temp\Script1.py", line 4, in f
    return i*f(i-1)
NameError: There is no variable named 'f'


Wenn f auf Modulebene definiert ist, ist das kein Problem.
Wenn man irgendwie das Funktionsobjekt der gerade ausgefuehrten
Funktion rauskriegen kann, ginge die Rekursion sicher mit
apply() zu machen.
Aber wie kommt man an das Funktionsobjekt?

Vielen Dank im voraus.


MfG
Rene Liebscher
_______________________________________________
Python-de maillist  -  Python-de at starship.python.net
http://starship.python.net/mailman/listinfo/python-de




More information about the Python-de mailing list