Open Qingquan-Li opened 5 years ago
参考:函数的回调和递归函数:https://www.jianshu.com/p/8606f789b468?from=singlemessage&isappinstalled=0 回调函数参考:JavaScript函数-回调函数 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。 递归的应用场景:遍历整个文件目录的结构、网络爬虫遍历整个网站的链接等。
参考:函数的回调和递归函数:https://www.jianshu.com/p/8606f789b468?from=singlemessage&isappinstalled=0
回调函数参考:JavaScript函数-回调函数
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。
递归的应用场景:遍历整个文件目录的结构、网络爬虫遍历整个网站的链接等。
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)
代码的执行流程图:
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
Python 递归函数示例1:
代码的执行流程图:
Python 递归函数示例2:
代码的执行流程图: