
Python基础–递归函数
==通俗一点来说在函数的内部,直接去调用其他函数的方式叫做函数的嵌套.但是,如果这个函数调用的是自身呢?这个样子的函数自身就属于递归函数==
Python对于递归函数的深度做了优化,最大只能执行1000次的计算,超过1000次就会直接报错,原因是递归函数非常消耗资源,而且容易出现栈溢出的现象
人为调整递归深度
1 2 3 4 5
| import sys sys.setrecursionlimit(10000) #括号中的值为递归深度,调整后是1W.超过1W会出现这个报错
RuntimeError: maximum recursion depth exceeded in comparison
|
经典实例:阶乘自身就能用递归函数来表达出来
1 2 3 4 5
| 1! = 1 2! = 2 * 1 3! = 3 * 2 *1 ... n! = n * (n-1)*…… * 2 * 1
|
以上是简单直接说明了阶乘的表达,接下来至二级用函数来进行直接表达出来
1 2 3 4 5 6 7 8 9 10 11
| # 定义一个函数,内部调用自己,如果是1 的换直接返回1 # 如果是大于1的话,输出他的阶乘,最后打印出来 def step_fun(num1): if num1 == 1: return 1 else: return num1 * step_fun(num1 - 1)
# step_fun(n) 里面的n 是自定义的参数,传参到函数内部,不知道的话,可以在之前的博文找下 res = step_fun(3) print(res)
|