Python精简入门学习(十)

作者: 码市冲冲冲 | 来源:发表于2021-04-10 13:59 被阅读0次

Python精简入门学习之递归函数
-递归

递归满足的条件
自己调用自己
必须有一个明确的结束条件
优点:
    逻辑点单、定义简单
缺点:
    容易导致栈溢出 内存资源紧张 甚至内存泄漏
循环的方式去实现
def jiecheng(n):
    result = 1      
    for item in range(1,n+1):   
        result *= item        
        pass
    return result
print('5的阶乘{}'.format(jiecheng(5)))
# 递归方式实现
def diguiJc(n):
    '''
    递归实现
    :param n:阶乘参数
    :return:
    '''
    if n==1:
        return 1
    else:
        return  n * diguiJc(n - 1)
    pass

# 递归调用
print('10的阶乘{}'.format(diguiJc(10)))
'''
思路:调用处为入口 此时n的值是10 进行判断 10是否等于1 不满足执行else的语句 返回n*diguiJc(n-1)
此时n的值为9 继续调用自身 直至满足第一个条件时直接返回1 就退出了空间开辟
'''

-递归

递归就是调用自身:
    递:
    简单来说就是俄罗斯套娃 一层又一层,你想要得到最里面的套娃那你就要一层一层的去打开 这里递
    归就是这样的 不断的开辟空间调用自身。如同《盗梦空间》一样,梦中梦。
    归:
    当不满足继续开辟空间的条件时,就会返回参数,但是它不能直接返回,就和套娃一样你要返回原样得一层一层
    的套回去,结果也得一层一层得往上传。如同《盗梦空间》一样,柯布最后梦醒了。

-如图所示

image.png
开辟空间(调用自身)-->关闭空间(参数传递)
必须要有一个明确的条件,不然无穷的开辟内存空间会导致堆栈溢出电脑慢到卡死。

相关文章

网友评论

    本文标题:Python精简入门学习(十)

    本文链接:https://www.haomeiwen.com/subject/nzqnkltx.html