Python自学 - 递归函数

1 Python自学 - 递归函数

递归函数是一种在函数体内调用自己的函数,就像"左脚踩着右脚,再右脚踩着左脚... 嗯,你就可以上天了!"。递归函数虽然不能上天,但在处理某些场景时非常好用, 一种典型的场景就是遍历目录。

由于递归使用不当时,会产生死循环,为了保护程序不发生死循环,Python对递归的最大次数进行了限制,通过getrecursionlimit()函数可以查看当前设置的最大递归次数。

py 复制代码
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位数?
    下面是阶乘的代码实现:
py 复制代码
def fact(n):
	return 1 if n == 1 else n * fact(n - 1)

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

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

另一种形式的阶乘代码:

py 复制代码
def fact(n):
	if n == 1:
		return 1
	else:
		return n * fact(n - 1)

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

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


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

Copyright © 2022~2024 All rights reserved.

相关推荐
molaifeng4 小时前
Go 语言如何实现高性能网络 I/O:Netpoller 模型揭秘
开发语言·网络·golang
崇山峻岭之间4 小时前
Matlab学习记录33
开发语言·学习·matlab
Evand J4 小时前
【2026课题推荐】DOA定位——MUSIC算法进行多传感器协同目标定位。附MATLAB例程运行结果
开发语言·算法·matlab
小二·4 小时前
Python Web 开发进阶实战:性能压测与调优 —— Locust + Prometheus + Grafana 构建高并发可观测系统
前端·python·prometheus
jllllyuz4 小时前
基于MATLAB的二维波场模拟程序(含PML边界条件)
开发语言·matlab
忆锦紫4 小时前
图像增强算法:Gamma映射算法及MATLAB实现
开发语言·算法·matlab
七牛云行业应用5 小时前
重构实录:我删了 5 家大模型 SDK,只留了 OpenAI 标准库
python·系统架构·大模型·aigc·deepseek
知乎的哥廷根数学学派5 小时前
基于多模态特征融合和可解释性深度学习的工业压缩机异常分类与预测性维护智能诊断(Python)
网络·人工智能·pytorch·python·深度学习·机器学习·分类
亲爱的非洲野猪6 小时前
Java锁机制八股文
java·开发语言
LawrenceLan6 小时前
Flutter 零基础入门(十二):枚举(enum)与状态管理的第一步
开发语言·前端·flutter·dart