57.递归函数

递归函数

<1>什么是递归函数

通过前面的学习知道一个函数可以调用其他函数。

如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。

<2>递归函数的作用

举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n

解决办法1:

看阶乘的规律
1! = 1
2! = 2 × 1 = 2 × 1!
3! = 3 × 2 × 1 = 3 × 2!
4! = 4 × 3 × 2 × 1 = 4 × 3!
...
n! = n × (n-1)!

解决办法2:

 原理

 例子1:

# 需求: 5! = 5 * 4 * 3 * 2 * 1

# 不考虑递归函数
def my_func(num):
    # 定义一个变量 保存结果
    ret = 1
    for i in range(1, num + 1):
        ret *= i
    return ret
print(my_func(100))

例子2:

# 需求: 5! = 5 * 4 * 3 * 2 * 1
# # 1! = 1
def func1(num):
    if num == 1:
        return num

# 2! = 2 * 1!
def func2(num):
    return num * func1(num -1)

# 3! = 3 * 2!
def func3(num):
    return num * func2(num - 1)

# 4! = 4 * 3!
def func4(num):
    return num * func3(num - 1)

# 5!
def func5(num):
    return num * func4(num - 1)

优化:

# 整合优化
# 递归函数: 其函数内部调用了自己本身
# python中的递归函数 是有递归次数 达到一定量后 会报错
# 使用递归必须有一个停止递归调用的条件
# 因为每次调用函数的时候 也需要消耗资源
# 会把计算机的资源耗尽 可能会造成计算机死机
# 函数存在于不同的空间 只是名字相同而已
# 识别哪些是递归函数
def func(num):
    if num == 1:
        return num
    return num * func(num - 1)
print(func(5))

 

posted @ 2020-05-07 01:36  kelin1  阅读(150)  评论(0编辑  收藏  举报