0%

Python基础--递归函数

python

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)