递归函数
就是定义了一个函数,然后在函数内,自己调用了自己(这个函数)
递归函数内必须要有结束,不然就会一直调用下去..死循环,直到调用的层数越来越多,栈溢出
递归函数是一层层进入,再一层一层返回
递归函数的效率并不高,尽量能不用就不用,不太适合庞大的数据量
一个函数如果调用后没有结束,那么栈空间中就一直一直存在,直到这个函数运算结束才销毁。
例子:
就像传纸条,你坐在最后一排向第一排的人传纸条,这时怎么办?
向你前一个人传递这个纸条,于是这个人继续向他前一个人传递电话...
重复这个过程,直到传递到了纸条,再将纸条向后一个个传递回来...
# 初步认识递归函数 3 2 1 0
# def digui(num):
# print(num)
#
# # 检测当前的值是否到了0
# if num > 0:
# # 调用函数自己本身
# digui(num-1)
#
# digui(3)
解析当前递归函数的执行过程:
digui(3) ==> 3
3 > 0
digui (3-1) ==> 2
2 > 0
digui (2-1) ==> 1
1 > 0
digui (1-1) ==> 0
def digui(num):
print(num)
# 检测当前的值是否到了0
if num > 0:
# 调用函数自己本身
digui(num-1)
print(num)
digui(3)
解析当前递归函数的执行过程:
digui(3) ==> 3
3 > 0
digui (3-1) ==> 2
2 > 0
digui (2-1) ==> 1
1 > 0
digui (1-1) ==> 0
0 > 0 ? X
digui (0) ==> 0
digui(1) ==> 1
digui (2) ==> 2
digui(3) ==> 3