python递归与二分法

一、递归

1.递归的定义

递归是函数嵌套调用中的一种特殊形式,函数在定义时,间接或直接调用自身,递归调用。

#直接调用本身
def f1():
     print('============>递归')
     f1()
func()

# #间接调用本身
def f1():
    print('=============>我是f1')
    f2()

def f2():
    print('=============>我是f2')
    f1()
f2()

# 直接调用或者间接调用本身,形成死循环,这种递归是无意义的递归,超过python限制的调用层级,代码会报错。

 RecursionError: maximum recursion depth exceeded while calling a Python object

调用函数会产生局部的名称空间,占用内存,因为上述这种调用会无需调用本身,python解释器的内存管理机制为了防止其无限制占用内存,对函数的递归调用做了最大的层级限制。

2. 修改递归调用最大深度

import sys
sys.getrecursionlimit()
sys.setrecursionlimit(2000)  #将默认的1000修改为2000

def f1(n):
    print('from f1',n)
    f1(n+1)
f1(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值