首页 > 技术文章 > 函数的递归调用

caoyu080202201 2020-01-03 17:01 原文

一、定义:函数的递归调用是函数的嵌套调用的一种特殊形式,表现为在调用一个函数的过程中又直接或间接地调用了自身,实现了循环,所以说递归的本质就是循环。

def f1():
    f1()  # 自我循环调用

def f2():
    f3()
def f3():
    f2()
# 互相循环调用

二、递归调用实现的循环与while循环的区别:while循环可以通过保持条件永远为真实现无限循环,但是每次循环不会额外申请内存空间。递归调用每次都会申请新的局部空间,所以默认有上限次数1000,该次数可以修改。

三、递归调用的两个阶段

  1、回溯:一层层的调用直至满足终止条件的过程称为回溯。

  2、递推:从满足终止条件向外层逐层返回的过程称为递推。

def add(n):
    if n == 1:
        return 100
    return add(n - 1) + 1
print(add(6))  # 结果为 105
# add(6) = add(5) + 1
# add(5) = add(4) + 1
# add(4) = add(3) + 1
# add(3) = add(2) + 1
# add(2) = add(1) + 1 
# 以上是回溯过程
# add(1) = 100
# add(2) = 100 + 1 = 101
# add(3) = 101 + 1 = 102
# add(4) = 102 + 1 = 103
# add(5) = 103 + 1 = 104
# add(6) = 104 + 1 = 105
# 以上是递推过程

 

推荐阅读