[Python-de] Rekursiver Funktionsaufruf

Rene Liebscher R.Liebscher at gmx.de
Fri Jun 22 14:40:58 EDT 2001


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



More information about the Python-de mailing list