21.python之递归函数

递归函数:

  • 一个函数不停的将自己反复执行
  • 在函数体中,符合某些条件返回值再次调用此函数

使用方法:

def test(a):
    函数体
    return test(a)  # 通过返回值,再次执行函数

例1:

def test(a):
    a += 1
    # 如果a小于5就再次执行函数test
    if a < 5:
        print('a={},a小于5'.format(a))
        return test(a)
    else:
        print('a={}'.format(a))

test(0)

结果:
在这里插入图片描述

例2:计算1+2+…+100

def add(count=0, total=0):
    total += count
    count += 1
    if count <= 100:
        return add(count,total)
    else:
        return total

print('1+2+...100={}'.format(add()))

结果:
在这里插入图片描述

内存溢出

注:使用递归函数要注意避免出现内存溢出的情况

内存溢出:程序要用的内存大于提供的最大内存

递归函数出现内存溢出的原因:
函数调用是通过栈这种数据结构实现的,每分配一个栈就需要消耗一部分内存,在递归调用中,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈 帧。 由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值