• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    python 递归相关知识总结

    听到递归总觉得挺高大上的,为什么呢?因为对其陌生,那么今天就来一文记住递归到底是个啥。

    不过先别急,一起来看一个问题:求10的阶乘(10!)。

    求x的阶乘,其实就是从1开始依次乘到x。那么10的阶乘就是 1*2*3*4*5*6*7*8*9*10

    一、非递归方式求阶乘

    假如,我们在没接触过递归的情况下,如何去解决这样的问题呢?

    最简单粗暴的方式 直接print(1*2*3*4*5*6*7*8*9*10)出结果就行了,结果是3628800。

    但是这种方式显然不是我们想要的,那么可以试试用for循环的方式来解决。

    def factorial(n):
     """
     n 就是要求的阶乘的数字
     """
     result = n
     for i in range(1, n):
      result *= i
    
     return result
    
    if __name__ == '__main__':
     print(factorial(10))

    二、递归方式求阶乘

    1. 什么是递归?

    相信大家一定都听过这么一个故事:

    从前有座山,山里有做庙,庙里有个老和尚在讲故事,讲的什么呢?
      从前有座山,山里有做庙,庙里有个老和尚在讲故事,讲的什么呢?
        从前有座山,山里有做庙,庙里有个老和尚在讲故事,讲的什么呢?
          ...

    其实这种就是递归,说白了,就是自己去引用自己。
    那么,递归用在函数中,就可以是这样的:

    def factorial():
     factorial() 
    
    if __name__ == '__main__':
     factorial()

    在调用函数factorial的时候 在函数中又继续调用factorial,跟上面的故事一样,就可以无穷无尽的递归下去,
    直到讲故事的老和尚累晕,以及电脑的内存溢出宕机。

    但是,重要的一点,递归只是解决问题的一种方式而已,比如上面的求阶乘,我用for循环一样解决。

    2. 递归解决阶乘

    如果要用递归解决上面的阶乘问题,可以再进一步了解下递归的整体思想。

    递归的整体思想就是,将一个大问题分解成一个个的小问题,直到问题没有办法再继续分解,于是,再去解决问题。
    那么,递归式函数就要满足2个条件:

    可以用这个思想来尝试用递归的方式解决阶乘的问题。

    10! = 10 * 9! # 10的阶乘其实可以看做是10 * 9的阶乘
    9! = 9 * 8!  # 9的阶乘可以看做是9 * 8的阶乘
    8! = 8 * 7!
    ...
    2! = 2 * 1!
    1! = 1

    可以看到,最后分解到1的时候就不可再继续分解了,那么1就是基线条件了。

    def factorial(n):
     # 基线条件,当满足时,则不再递归
     if n == 1:
      return 1
    
     # 递归条件,当n不等于1时,继续递归
     return n * factorial(n - 1)
    
    if __name__ == '__main__':
     print(factorial(10))

    三、总结

    以上就是python 递归相关知识总结的详细内容,更多关于python 递归的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • python如何实现递归转非递归
    • 10张动图学会python循环与递归问题
    • Python非单向递归函数如何返回全部结果
    • python递归函数用法详解
    • Python尾递归优化实现代码及原理详解
    • python如何停止递归
    • python利用递归方法实现求集合的幂集
    • Python函数递归调用实现原理实例解析
    • python实现文法左递归的消除方法
    • python filecmp.dircmp实现递归比对两个目录的方法
    • python递归函数求n的阶乘,优缺点及递归次数设置方式
    上一篇:使用pandas读取表格数据并进行单行数据拼接的详细教程
    下一篇:python爬虫scrapy框架之增量式爬虫的示例代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    python 递归相关知识总结 python,递归,相关,知识,总结,