-
Notifications
You must be signed in to change notification settings - Fork 14
Open
Labels
Description
参考:函数的回调和递归函数:https://www.jianshu.com/p/8606f789b468?from=singlemessage&isappinstalled=0
回调函数参考:JavaScript函数-回调函数
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。递归的应用场景:遍历整个文件目录的结构、网络爬虫遍历整个网站的链接等。
Python 递归函数示例1:
def sum_numbers(num):
print(num) # 分别打印:3、2、1
# 递归出口。没有递归出口,可能导致死循环致程序中断。
# 程序到达出后后,函数的调用才能一层一层地返回,一直返回到最初调用的位置:sum_numbers(3)
# Python默认的递归(程序递归地自我调用次数)限制是1000次。
if num == 1:
return
sum_numbers(num-1)
sum_numbers(3)Python 递归函数示例2:
def sum_numbers(num):
print(num) # 断点调试分别输出:3、2、1
if num == 1:
return 1
# 满足条件num==1,把1作为函数的返回值,返回到上次调用函数的位置:sum_numbers(num -1 )
temp = sum_numbers(num - 1)
print('===============')
print(temp) # 断点调试分别输出:1、3
print('===============')
print(temp + num) # 断点调试分别输出:3、6
return temp + num
print(sum_numbers(3)) # 打印出6