yiruia的个人博客分享 http://blog.sciencenet.cn/u/yiruia

博文

Day17 递归函数

已有 1127 次阅读 2020-3-15 11:09 |系统分类:科研笔记

一、递归函数的意义

在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

意义:通过一定的“基”,并按照某种规则达到重复的效果。

二、递归函数的应用

def story(): # 第一步
    print('从前有座山') # 第三步,第五步...
    story() # 第四步,第六步...

story() # 第二步
# 但是会报错,每次调用函数都会开辟独立的空间,第二次调用函数的时候第一个调用函数的空间还没释放掉,第一次函数还没结束。
'''
RecursionError: maximum recursion depth exceeded while calling a Python object
递归错误,超过了递归的最大深度,并不是真的报错了,是对内存的保护。
'''
alex多大?         n=1 age(1)=age(2)+2=age(n+1)+2
alex比egon大两岁,
egon多大?         n=2 age(2)=age(3)+2=age(n+2)+2
egon比wusir大两岁,
wusir多大          n=3 age(3)=age(4)+2=age(n+2)+2
wusir比金老板大两岁,
金老板今年40了      n=4 age(4)=40
递归——先递再归,
当n=4时,age(4)=40
当n<4时,age(n)=age(n+1)+2
def age(n):
    if n==4:
        return 40
    elif n>0 and n<4:
        return age(n+1)+2
print(age(1))

查看递归的方法:

先递后归

def age(1):
    if 1==4:
        return 40
    elif 1>0 and 1<4:
        return 44+2
print(age(1))

def age(2):
    if 2==4:
        return 40
    elif 2>0 and 2<4:
        return 42+2
print(age(2))

def age(3):
    if 3==4:
        return 40
    elif 3>0 and 3<4:
        return 40+2
print(age(3))

def age(4):
    if 4==4:
        return 40
    elif 4>0 and 4<4:
        return age(3+1)+2
print(age(4))

注意事项:

(1)主要写递归函数,必须有结束条件

(2)不要只看return就认为已经返回了,要看返回操作是在递归到第几层的时候发生的,然后返回给了谁。

(3)如果不是返回到最外层函数,调用者就接收不到,需要再分析,看如何把结果返回回来。



https://blog.sciencenet.cn/blog-3405644-1223612.html

上一篇:Day16 重要的内置函数
下一篇:Day18正则表达式
收藏 IP: 223.91.42.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-20 05:05

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部