什么是递归函数?
在函数内部,也可以继续调用其他函数,如果一个函数在内部调用本身,这个函数为递归函数
举一个求n的阶乘的例子:
def fact(n):
if n == 1:
return 1;
else:
return n * fact(n-1)
print fact(5)
>>>120
以上就是一个递归函数
这个函数运行的过程如下:
===> fact(5)
===> 5 * fact(4)
===> 5 * (4 * fact(3))
===> 5 * (4 * (3 * fact(2)))
===> 5 * (4 * (3 * (2 * fact(1))))
===> 5 * (4 * (3 * (2 * 1)))
===> 5 * (4 * (3 * 2))
===> 5 * (4 * 6)
===> 5 * 24
===> 120
注:但使用递归函数需要防止栈(stack)溢出,函数的调用是通过栈(stack)这种数据结构来实现,每当进入一个函数调用,栈就会增加一层栈帧,每当函数返回时,就会减少一层栈帧,由于栈的大小不是无限的,所以,递归调用的次数过多时,会导致栈溢出