函数递归

函数递归

一、函数递归

函数递归指的是重复的直接或者间接的调用函数本身

这是一种函数嵌套调用的表现形式

直接调用:指的是在函数内部,直接调用函数本身

间接调用:指的是两个函数之间互相调用,间接造成递归

例如

直接调用

def func():
    print('from func...')
    func()


func()

在调用func的时候,又调用func,这就是直接调用函数func本身

间接调用

def f1():
    print('from f1...')
    f2()


def f2():
    print('from f2...')
    f1()


f1()

在调用f1的过程中,又调用f2,而在调用f2的过程中,又调用f1,这既是间接调用函数f1本身

Python中有默认递归深度——1000 实际上是998

num = 1
def func():
    global num
    print('from func...', num)
    num += 1
    func()


func()
from func... 998Traceback (most recent call last):

import sys

获取操作系统资源的模块

​ 获取递归深度:sys.getrecursionlimit()

​ 设置递归深度:sys.getrecursionlimit(深度值,比如2000)

二、回溯与递推

单纯的递归没有任何意义,想要有意义,必须遵循两个条件

回溯:指的是重复执行,每一次执行都要等到一个更接近于结果的结果,回溯必须有一个终止条件

递推:当回溯找到一个终止条件后,开始一步一步往上递推

举个例子:

第一个人是18岁,第二个人说比他大2岁,第三个人说比第二个大2岁,以此类推,问第5个人多大?

age5 = age4 + 2
age4 = age3 + 2
age3 = age2 + 2
age2 = age1 + 2
age1 = 18  # 回溯终止的结果
总结为:
result = age(n - 1) + 2
def age(n):
    if n ==1:
        return 18
    return age(n - 1) + 2


res = age(5)
print(res)
26
posted @ 2019-11-19 16:05  YGZICO  阅读(128)  评论(0编辑  收藏  举报