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

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 1
	else:
		return n * fact(n - 1)

print(fact(5)) #输出:120

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


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


http://www.kler.cn/a/467915.html

相关文章:

  • HTML5实现好看的博客网站、通用大作业网页模板源码
  • [python3]Excel解析库-openpyxl
  • MCGS学习记录
  • 第431场周赛:最长乘积等价子数组、计算字符串的镜像分数、收集连续 K 个袋子可以获得的最多硬币数量、不重叠区间的最大得分
  • gaussdb怎么查询一个表所在的表空间的总大小和可用大小,用GB为单位表示?
  • C++基础概念复习
  • 中型 UniApp 项目的挑战与突破
  • (九千七-星河襟)椭圆曲线加密(ECC, Elliptic Curve Cryptography)及其例题
  • 软考 高级 架构师 第十 章软件工程3
  • 【童年经典小游戏】使用Python实现经典贪吃蛇游戏
  • 逻辑漏洞(超详细)
  • Linux操作系统下,挂ILA
  • HTML——73.button按钮
  • api接口技术开发按图搜索商品api轻松查询获取商品信息返回值结构
  • 基于Spring Boot的便民医疗服务小程序
  • Java 控制台彩色输出工具类详解
  • ChatGPT最新版本“o3”的概要
  • 浙江中医药大学携手云轴科技ZStack荣获“鼎信杯”金鼎实践奖
  • uniapp视频首页页面
  • ts是什么、tsc是什么、tsx是什么、jsx是什么、scss是什么
  • WordPress新安装只安装主题后发现只有首页能打开,其他路由页面都是404,并且Elementor都打不开
  • 腾讯云智能结构化 OCR:驱动多行业数字化转型的核心引擎
  • 全方位沉浸式音响体验——利用汽车结构件作为发声体提升车内音质引言
  • NLP 技术的突破与未来:从词嵌入到 Transformer
  • Android XR:Google在扩展现实领域的第二次起航
  • 五类推理(逻辑推理、概率推理、图推理、基于深度学习的推理)的开源库 (一)