递归函数:
- 一个函数不停的将自己反复执行
- 在函数体中,符合某些条件返回值再次调用此函数
使用方法:
def test(a):
函数体
return test(a) # 通过返回值,再次执行函数
例1:
def test(a):
a += 1
# 如果a小于5就再次执行函数test
if a < 5:
print('a={},a小于5'.format(a))
return test(a)
else:
print('a={}'.format(a))
test(0)
结果:
例2:计算1+2+…+100
def add(count=0, total=0):
total += count
count += 1
if count <= 100:
return add(count,total)
else:
return total
print('1+2+...100={}'.format(add()))
结果:
内存溢出
注:使用递归函数要注意避免出现内存溢出的情况
内存溢出:程序要用的内存大于提供的最大内存
递归函数出现内存溢出的原因:
函数调用是通过栈这种数据结构实现的,每分配一个栈就需要消耗一部分内存,在递归调用中,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈 帧。 由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。