Loading

函数的递归

TOC

一、函数的递归

单纯的递归调用时没有任何意义

函数的递归是指重复 “直接调用或间接调用” 函数本身,这是一种函数嵌套调用的表现形式。

1.1 函数调用的方式

  • 直接调用
    • 指的是在函数体代码中直接调用函数本身
# 直接调用
def func():
    print('你好')
    func()


func()
  • 间接调用
    • 两个函数之间相互调用,间接造成递归
def foo():
    print('from foo')
    goo()

def goo():
    print('from goo')
    foo()

foo()

二、回溯和递归

想要递归有意义,必须遵守两个条件:

  • 回溯
    • 回溯是指重复的执行,每一次执行都要拿到一个更接近于结果的结果。
    • 回溯必要有一个终止条件
  • 递归
    • 当回溯找到一个终止条件后,开始一步一步往上递推

image-20191115152746950

def age(n):
    if n == 1:
        return 18

    return age(n - 1) + 2

res = age(5)
print(res)

三、拓展面试(了解)

3.1 python中默认递归深度

python中默认递归次数,999或者1000

ps:但是每一台操作系统中会根据硬盘来设置默认递归深度

# 获取递归深度
import sys
sys.getrecursionlimit()

# 设置递归深度
sys.setrecursionlimit()
# 查看当前可以承受的递归深度
int = 0
def func():
    global int
    int += 1
    print(int)
    func()

func()




posted @ 2019-11-19 17:20  开花的马铃薯  阅读(97)  评论(0编辑  收藏  举报