当前位置: 首页 > news >正文

Python自学 - 递归函数

1 Python自学 - 递归函数

  递归函数是一种在函数体内调用自己的函数,就像“左脚踩着右脚,再右脚踩着左脚… 嗯,你就可以上天了!”。递归函数虽然不能上天,但在处理某些场景时非常好用, 一种典型的场景就是遍历目录。
  由于递归使用不当时,会产生死循环,为了保护程序不发生死循环,Python对递归的最大次数进行了限制,通过getrecursionlimit()函数可以查看当前设置的最大递归次数。

from sys import getrecursionlimit
print(getrecursionlimit()) #输出:1000

注:如果对递归的最大次数不满意,可以使用setrecursionlimit函数设置最大递归次数。

  • 示例1: 使用递归函数计算阶乘
      阶乘是数学里一个很常见的计算,一个数的阶乘是:所有小于及等于该数的正整数的积,比如:3的阶乘是:3*2*1, 5的阶乘是:5*4*3*2*1. 在数学中,阶乘计算符是“!”
      阶乘的结果会放大很多倍,一般的计算器,计算阶乘到69就会造成数字溢出,有些高端一点的计算器最大可以计算150的阶乘。可见阶乘的放大系数很大。
      普通人能接触到的阶乘在日常生活中的应用就是排列组合, 比如:小学常考的试题,给出1,2,3共3个数字,可以组成多少个3位数?
    下面是阶乘的代码实现:
def fact(n):return 1 if n == 1 else n * fact(n - 1)print(fact(5)) #输出:120

注:读者如果还记得Python自学 - 条件语句中的内容话,会知道上面fact函数中使用三元操作符

另一种形式的阶乘代码:

def fact(n):if n == 1:return 1else:return n * fact(n - 1)print(fact(5)) #输出:120

递归还有一个很典型的场景就是遍历目录,列出所有子文件夹中的文件及目录,关于这块的代码,读者可以在网上搜索,有大量现成的代码可供参考。


作者声明:本文用于记录和分享作者的学习心得,水平有限,难免存在表达错误,欢迎交流和指教!
Copyright © 2022~2024 All rights reserved.

http://www.lryc.cn/news/516081.html

相关文章:

  • Spark-Streaming有状态计算
  • Markdown如何导出Html文件Markdown文件
  • 使用Python进行图像裁剪和直方图分析
  • 企业内管信息化系统
  • 【python因果库实战15】因果生存分析4
  • Linux 线程详解
  • 云架构:考量与框架
  • SD下载、安装、使用、卸载-Stable Diffusion整合包v4.10发布!
  • java 发送邮件
  • 聚类系列 (二)——HDBSCAN算法详解
  • AngularJS HTML DOM
  • C语言延时实现
  • OSI模型的网络层中产生拥塞的主要原因?
  • 机器学习周报-ModernTCN文献阅读
  • 什么是网关路由
  • 信号的产生、处理
  • 在Linux中,zabbix如何监控脑裂?
  • C++基础概念复习
  • Earth靶场
  • JavaScript 日期格式
  • django vue3实现大文件分段续传(断点续传)
  • xiaoya小雅超集使用夸克网盘缓存教程
  • 计算机基础知识复习1.4
  • SpringMVC(三)请求
  • Node.js应用程序遇到了内存溢出的问题
  • 如何构建云原生时空大数据平台?
  • 二极管钳位电路分享
  • 腾讯云智能结构化 OCR:驱动多行业数字化转型的核心引擎
  • 19.3、Unix Linux安全分析与防护
  • JVM对象内存结构