一个函数在内部调用自己本身,那么这个函数就是递归函数。
>>> def test(n): ... print(n/2) ... if int(n/2) > 0: ... return test(n/2) ... >>> test(10) 5.0 2.5 1.25 0.625
递归特性:
1.必须有一个明确的结束条件(死循环会递归到最大递归次数999次结束);
2.每次进入更深一层递归时,问题规模相比上次递归都应有所减少;
3.递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减少一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出)