函数就像一个盒子,将相关的一些功能打包成一个函数,以供调用。函数内部可以调用其他函数,也可以调用这个函数自身。如果一个函数在内部调用函数自身,那么这个就是递归函数。我们举一个简单的例子。数学中我们知道100的阶乘,100!=1009998…321.分解开来,100!=10099!,99!=9998!,98!=98*97!…那么我们定义一个函数来计算阶乘:
def fact(n):
return n*fact(n-1)
上面这个函数看起来是一个数字不断地跟与它小1的数相乘,却没有停止的时候。所以我们必须对上述函数进行改造,让它能在n=1的时候,计算完就停下来。
def fact(n):
if n==0:
return 1
else:
return n*fact(n-1)
递归函数也可以用循环的方式实现。但是递归函数逻辑较为简单。但是在使用递归函数的时候,要注意防止递归函数调用过多导致栈溢出。