赞
踩
微信公众号搜索【程序媛小庄】,关注半路出家的程序媛如何靠python开发养家糊口~
函数既可以嵌套定义也可以嵌套调用。嵌套定义指的是在定义一个函数时在该函数内部定义另一个函数;嵌套调用指的是在调用一个函数的过程中函数内部有调用另一个函数。而函数的递归调用指的是在调用一个函数的过程中又直接或者间接的调用该函数本身。
函数递归就是函数的递归调用,是函数嵌套调用的一种特殊形式,具体就是指在调用一个函数的过程中直接或者间接的调用到本身,递归的本质就是循环做重复的事情。
在调用func的过程中又调用func,这就是直接调用函数本身;
在调用func的过程中调用foo,而在调用foo的过程中又调用func,这就是间接调用func本身。
通过上面的分析,两种情况下的函数递归调用都是一个无限循环的过程,Python为了防止函数递归进入无限循环对函数递归调用的深度做了限制,一旦超出限制就会抛出异常。
def foo():
print('foo')
func()
def func():
print('func')
foo()
func()
'''
程序运行结果:
RecursionError: maximum recursion depth exceeded while calling a Python object(超过最大递归深度)
'''
因此为了避免函数递归调用报错,就必须在满足某中条件的情况下结束对函数的递归调用。
def foo(n):
if n == 1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。