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.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949256.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

生产看板真的有用吗?

​看板,对于从事制造行业的人员来说,这并不陌生。但是对于看板起到的作用,那可就是众说纷纭,有人说,看板是领导的“面子工程”,是混淆上级视察的工具;也有人说,看板真切地帮助车间提…

刷服务器固件

猫眼淘票票 大麦 一 H3C通用IP 注:算力服务器不需要存储 二 刷服务器固件 1 登录固定IP地址 2 升级BMC版本 注 虽然IP不一致但是步骤是一致的 3 此时服务器会出现断网现象,若不断网等上三分钟ping一下 4 重新登录 5 断电拔电源线重新登录查看是否登录成功

机器学习算法在推荐系统中的应用:从数据预处理到模型部署实战指南

机器学习算法在推荐系统中的应用:从数据预处理到模型部署实战指南 介绍 在当今信息爆炸的时代,推荐系统扮演了越来越重要的角色,它可以帮助用户发现和获取个性化的信息、产品或服务。而推荐系统中的机器学习算法则是其核心引擎,能…

上门按摩系统架构与功能分析

一、系统架构 服务端用Java语言(最低JDK1.8,支持JDK11以及JDK17)、MySQL数据库(标配5.7版本,支持MySQL8),Mybatis ORM框架,Redis缓存,nginx代理,前端用uniap…

使用mne对运动想象数据bciIV进行预处理

需要的库 mne numpy scipy scikit-learn pip install mne numpy scipy scikit-learn 数据下载 对Data sets 2a ‹4-class motor imagery› 四分类的运动想象来进行mne的处理。 BCI Competition IV 数据的说明如下 [22 EEG channels (0.5-100Hz; notch filtered), 3 EOG chann…

设计模式 行为型 策略模式(Strategy Pattern)与 常见技术框架应用 解析

策略模式(Strategy Pattern)核心思想是将算法的实现从使用该算法的类中分离出来,作为独立的对象,通过接口来定义算法家族,这样就可以很容易地改变或扩展算法。通过这种方式,可以避免在客户端代码中使用大量…

配置管理工具和k8s功能重叠部分的优势比较

通过自动化配置管理工具(如 Ansible、Puppet、Chef)和应用内管理机制,也可以实现自动部署、扩缩容、负载均衡和故障恢复等功能。Kubernetes(K8s)在这些方面具有哪些独特的优势呢,尤其是在云原生环境和大规模…

OpenHarmony AVScreenCaptureRecorder录屏开发指导

一、简介 OpenHarmony 5.0新增了AVScreenCaptureRecorder ArkTs API。用户可以调用录屏AVScreenCaptureRecorder API录制屏幕,采集音频源数据,获取封装后的音视频文件,然后通过文件的形式流转到其他模块进行播放或处理,用于以文件…

CSS Grid 布局示例(基本布局+代码属性描述)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>CSS Grid 布局示例</title><style>.gri…

爬虫学习案例3

爬取美女图片 优美图库地址 一页图片 安装依赖库文件 pip install selenium requests beautifulsoup4import time import requests import random from bs4 import BeautifulSoup from selenium import webdriver from selenium.webdriver.chrome.service import Service fr…

简单的spring boot tomcat版本升级

简单的spring boot tomcat版本升级 1. 需求 我们使用的springboot版本为2.3.8.RELEASE&#xff0c;对应的tomcat版本为9.0.41&#xff0c;公司tomcat对应版本发现攻击者可发送不完整的POST请求触发错误响应&#xff0c;从而可能导致获取其他用户先前请求的数据&#xff0c;造…

http源码分析

一、HttpURLConnection http连接池源码分析 二、HttpClient 连接池&#xff0c;每个路由最大连接数 三、OkHttp okhttp的连接池与socket连接

阿里云DDoS防护:如何更换IP地址,保护您的云服务器

随着网络攻击日益增多&#xff0c;DDoS&#xff08;分布式拒绝服务&#xff09;攻击已经成为对企业和个人云资源的一大威胁。为了帮助用户抵御这类攻击&#xff0c;阿里云推出了强大的DDoS防护服务&#xff0c;保障您的云服务器免受恶意流量的影响。今天&#xff0c;九河云就来…

[sdx12] Qualcomm SDX12查看基线版本

about.html文件 Build部分 Product SDX12.LE.1.0-00263-NBOOT.NEFS.PROD-1.90789.1 Distribution SDX12.LE.1.0|AMSS|Standard|OEM: Build Components部分 从以上截图可以看到以下模块的版本号及格式 BOOT 基线版本号 BOOT.BF.3.1.c3-00010-SDX12AAAAANAZB-1 Distr…

Qt天气预报系统界面关闭

Qt天气预报系统界面关闭 1、点击右上角x退出1.1添加控件1.2修改控件名字1.3编程实现控件功能 2、鼠标右键退出2.1重写鼠标点击事件2.2添加定义2.3添加一个菜单2.3.1创建一个菜单指针2.3.2创建一个菜单对象2.3.3显示菜单2.3.4定义一个菜单退出动作2.3.5在当前鼠标位置显示菜单2.…

vue2实现excel文件预览

一、插件 通过xlsx插件解析excel数据&#xff0c;对解析后的html组件进行渲染展示。 npm install xlsx 二、完整代码 <template><!-- excel文件预览 --><divelement-loading-text"拼命加载中"element-loading-spinner"el-icon-loading"…

【简博士统计学习方法】2. 统计学习方法的基本分类

2. 统计学习方法的基本分类 监督学习所学习的数据都是已经标注过的&#xff1b;无监督学习所学习的数据没有标注信息&#xff1b;半监督学习只含有少量标注&#xff0c;大多数没有标注&#xff08;利用已标注的数据来学习去标注未标注的数据&#xff09; 2.1 监督学习 图里的…

【Python爬虫实战】从基础概念到HTTP/HTTPS协议全面解析

&#x1f308;个人主页&#xff1a;https://blog.csdn.net/2401_86688088?typeblog &#x1f525; 系列专栏&#xff1a;https://blog.csdn.net/2401_86688088/category_12797772.html 目录 前言 一、爬虫的关键概念 &#xff08;一&#xff09;HTTP请求与响应 &#xff0…

Git命令行的使用

目录 一、什么是Git 1、本地仓库 vs 远端仓库 本地仓库 远端仓库 2、.git vs .gitignore .git .gitignore 二、使用Git命令 1、安装git 2、git首次使用需要配置用户邮箱和用户名 3、上传目录/文件到远端仓库步骤 1&#xff09;创建放置文件的目录 2&#xff09;cd…

Genome Research | 俄亥俄州立于忠堂组-结合深度学习与蛋白质数据库系统探究反刍动物真核微生物...

结合深度学习与蛋白质数据库系统探究反刍动物真核微生物 Probing the eukaryotic microbes of ruminants with a deep-learning classifier and comprehensive protein databases 期刊&#xff1a;Genome Research DOI&#xff1a;https://doi.org/10.1101/gr.279825.124 第一作…