小编Alg*_*ary的帖子

为什么返回自身的函数在python 3中最大化递归

为什么这段代码会出错:RuntimeError: maximum recursion depth exceeded during compilationprint_test从不调用自己,因此我认为它不是一个递归函数.

def print_test():
    print("test")
    return print_test

print_test() #prints 'test'
print()

#a quick way of writing "print_test()()()()()()()()()()()()()..."
eval("print_test"+"()"*10000) #should print 'test' 10000 times
Run Code Online (Sandbox Code Playgroud)

当我测试它时,它在Python 2.7.7rc1中工作但在Python 3.3.5中给出了错误.Pdb给出一个短调用堆栈,不同于超过最大递归深度时通常存在的高调用堆栈.

Traceback (most recent call last):
  File "/usr/lib/python3.3/pdb.py", line 1662, in main
    pdb._runscript(mainpyfile)
  File "/usr/lib/python3.3/pdb.py", line 1543, in _runscript
    self.run(statement)
  File "/usr/lib/python3.3/bdb.py", line 405, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "/home/beet/overflow.py", line 1, in <module>
    def print_test():
Run Code Online (Sandbox Code Playgroud)

我出于好奇而想知道这一点,并意识到这不是最好的编程实践.

python recursion python-3.x

15
推荐指数
1
解决办法
853
查看次数

标签 统计

python ×1

python-3.x ×1

recursion ×1