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.
相关文章:
Python自学 - 递归函数
1 Python自学 - 递归函数 递归函数是一种在函数体内调用自己的函数,就像“左脚踩着右脚,再右脚踩着左脚… 嗯,你就可以上天了!”。递归函数虽然不能上天,但在处理某些场景时非常好用, 一种典型的场景就是遍…...
后端开发入门超完整速成路线(算法篇)
引言 后端开发是软件开发中不可或缺的一部分,它涉及到服务器、数据库、API等核心组件的构建和维护。对于初学者来说,掌握算法和数据结构是进入后端开发领域的基础。本文将为你提供一个超完整的算法学习路线,帮助你快速入门,并在文…...
51单片机——共阴数码管实验
数码管中有8位数字,从右往左分别为LED1、LED2、...、LED8,如下图所示 如何实现点亮单个数字,用下图中的ABC来实现 P2.2管脚控制A,P2.3管脚控制B,P2.4管脚控制C //定义数码管位选管脚 sbit LSAP2^2; sbit LSBP2^3; s…...
使用Clion在ubuntu上进行交叉编译,并在Linux上远程编译五子棋
目录 1.工具以及概念介绍 (1)Clion软件简介 (2)交叉编译 (3)远程编译 2.操作原理 3.详细操作步骤 (1)配置Clion与虚拟机ubuntu的ssh连接 CLion远程开发Ubuntu,并显…...
高并发写利器-组提交,我的Spring组件实战
高并发写优化理论 对于高并发的读QPS优化手段较多,最经济简单的方式是上缓存。但是对于高并发写TPS该如何提升?业界常用的有分库分表、异步写入等技术手段。但是分库分表对于业务的改造十分巨大,涉及迁移数据的麻烦工作,不会作为…...
Stable Diffusion的简单介绍
Stable Diffusion 是一款免费、开源的 AI 图像生成器,由 Stability AI 公司于 2022 年 8 月推出1。以下是关于它的详细介绍: 目录 工作原理 特点 应用场景 主要版本 工作原理 Stable Diffusion 属于潜在扩散模型,主要由三部分组成&…...
R语言的数据结构
R语言的数据结构 R语言是专门为统计计算和数据分析而设计的一种编程语言,因其强大的数据处理能力而受到广泛欢迎。在R中,数据结构是理解和有效使用R语言的基础。本文将详细介绍R语言中的主要数据结构,包括向量、矩阵、数据框、列表、因子等&…...
go项目zero框架中用gentool解决指定MYSQL表生成结构体被覆盖的解决方案
在使用 GoZero 框架进行项目开发时,gentool 是一个非常方便的工具,它可以根据数据库表结构自动生成 Go 语言结构体和其他相关文件。然而,在使用 gentool 生成结构体时,可能会遇到一个问题:如果多次运行 gentool&#x…...
限时特惠,香港服务器,低至53元/年
家人们谁懂啊!香港服务器这价格简直逆天了,居然比内地的还便宜!就拿阿里云来说,人家最低配置的服务器,价格都很难做到这么亲民。 最低配的就不说了,2 核 4G 的配置,应对日常业务稳稳当当&#x…...
【GUI-pyqt5】QObject类
1. QObject模块详解 1.1 描述 所有Qt对象的父类 1.2 功能和作用 1.2.1 对象名称和属性 1.2.1.1 API API功能备注 setObjectName("唯一名称") 给一个Qt对象设置一个名称 一般这个名称是唯一的,当做对象ID来使用 objectName() 获取一个对象名称 - set…...
第2章:SQL基础
第2章:SQL基础 2.1 SQL语言介绍 2.1.1 SQL发展历史 SQL的起源SQL标准的演变不同数据库的SQL实现 2.1.2 SQL语言分类 数据定义语言 (DDL):用于定义和修改数据库的结构,包括数据库、表、索引、视图等对象的创建、修改和删除。数据操作语言 (DML):用于…...
Azkaban其一,介绍、体系架构和安装
目录 一、简介 二、Azkaban的体系结构 三、Azkaban的安装步骤 1、上传,解压 2、生成mysql的元数据 3、配置web-server 4、配置exec-server 5、修改所有的.sh 的执行权限 一、简介 遇到了什么问题才会使用Azkaban ?比如: 想启动hadoop集群先启动…...
Seata 使用教程:全面解锁分布式事务管理
Seata 使用教程:全面解锁分布式事务管理 在当今分布式系统蓬勃发展的时代,微服务架构被广泛应用,随之而来的是分布式事务管理的难题。Seata 作为一款开源的分布式事务解决方案,为保障分布式系统的数据一致性提供了强有力的支持。本文将详细讲解 Seata 的使用方法,深入剖析…...
《learn_the_architecture_-_aarch64_exception_model》学习笔记
1.当发生异常时,异常级别可以增加或保持不变,永远无法通过异常来转移到较低的权限级别。从异常返回时,异常级别可能会降低或保持不变,永远无法通过从异常返回来移动到更高的权限级别。EL0级不进行异常处理,异常必须在比…...
密码学原理技术-第十一章-Hash Functions
文章目录 总结Why we need hash functionsDigital Signature with a Hash FunctionBasic Protocol for Digital Signatures with a Hash FunctionPrincipal input–output behavior of hash functions Security propertiesThe three security requirements of hash functionsWh…...
Golang 入门基础知识
快速入门 go 语言笔记,参考了各种大佬的 blog 。 一、下载安装 国内站点 :https://golang.google.cn IDE : Goland (2020.12月以后破解有些困难 见 zhile.io, 无法试用的话可以搜一个注册码,失效的也可以&…...
SQL把字符串按逗号分割成记录
在 SQL 中,可以通过以下方法将字符串按逗号分割,并将每个分割的值作为单独的记录插入到结果集中。以下是针对不同数据库系统的实现方法: 1. 使用 STRING_SPLIT(SQL Server 2016) STRING_SPLIT 是 SQL Server 提供的内置…...
HTML——26.像素单位
<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>像素</title></head><body><!--像素:1.指设备屏幕上的一个点,单位px,如led屏上的小灯朱2.当屏幕分辨率固定时&…...
TIM的输出比较(PWM)
OC(Output Compare)输出比较 输出比较可以通过比较CNT与CCR寄存器值的关系,来对输出电平进行置1、置0或翻转的操作,用于输出一定频率和占空比的PWM波形 每个高级定时器和通用定时器都拥有4个输出比较通道 初始化 1.开启RCC RCC_…...
李宏毅机器学习笔记-Transformer
目录 1. Seq2seq 2. encoder Transformer 中的 Block 结构 3. Decoder 4.Encoder和Decoder间的信息传递 5.Training 6.Tips 1. Seq2seq Transformer 是一个seq2seq的model。Seq2seq指的是input是一个序列,输出也是一个序列,输出的长度是由机器自己…...
【机器学习:三、常见的代价函数】
代价函数的选择与任务类型(回归、分类等)以及模型的具体目标密切相关。 回归任务中的代价函数 均方误差(Mean Squared Error, MSE) 公式: J ( θ ) 1 m ∑ i 1 m ( y i − y ^ i ) 2 J(\theta)\frac{1}{m}\sum_{i1}^m(y_i-\…...
React 数据是怎样传递的
写在前面 在 React 应用程序中,数据传递是非常重要的。它允许我们在组件之间共享信息和状态,从而构建出复杂的用户界面。本文将深入探讨 React 中的数据传递机制,包括 props、state 和 context API。我们还将通过实际例子来演示如何在项目中…...
Python入门教程 —— 高阶函数和装饰器
1.递归函数 什么是递归函数 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。 递归函数的作用 举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n 解决办法1:使用循环来完成 def cal(num):result,i = 1,1while i <= num:result *= ii…...
RSA密码的安全性分析(简化版本)
RSA的安全性是基于分解大整数的困难性假定,之所以认为是假定是因为至今还未能证明大整数就是NP问题,也许有尚未发现的多项式时间分解算法。随着人类计算能力的不断提高,原来被认为是不可能分解的大数已经被成功分解。对于大整数的威胁除了人类…...
解决Vue中设置el-select的高度不生效问题
el-select是Element UI框架中的一个选择器组件,它允许用户从多个选项中选择一个或多个项目。但这里确存在一个小坑,我们可以看到直接修改el-select的高度是无法生效的 <template><div id"login"><el-select v-model"role…...
解决openpyxl操纵带公式的excel或者csv之后,pandas无法读取数值的问题
1 功能特点 openpyxl: 这是一个专门用于操作Excel文件(.xlsx/.xlsm)的库。它提供了丰富的功能来读取、写入和修改Excel文件的各个元素,如单元格、行、列、工作表等。例如,可以通过openpyxl轻松地创建一个新的Excel工作…...
高等数学学习笔记 ☞ 无穷小比较与等价无穷小替换
1. 无穷小比较 1. 本质:就是函数的极限趋于0时的速度,谁快谁慢的问题。 2. 定义:若是在同一自变量的变化过程中的无穷小,且,则: ①:若,则称是比的高阶无穷小,记作&…...
计算队列中的‘捣乱分子’对数:一种量化无序程度的方法
计算队列中的‘捣乱分子’对数:一种量化无序程度的方法 前言解题思路关键点实现代码时间复杂度分析前言 在日常生活中,我们经常会遇到需要排队的场景,比如买票、候车、就餐等。在理想的排队情况下,人们会按照某种顺序(如先到先服务)整齐地排成一列。然而,总有一些人不遵…...
如何在不丢失数据的情况下从 IOS 14 回滚到 IOS 13
您是否后悔在 iPhone、iPad 或 iPod touch 上安装 iOS 14?如果你这样做,你并不孤单。许多升级到 iOS 14 beta 的 iPhone、iPad 和 iPod touch 用户不再适应它。 如果您在正式发布日期之前升级到 iOS 14 以享受其功能,但您不再适应 iOS 14&am…...
提升汽车金融租赁系统的效率与风险管理策略探讨
内容概要 在汽车金融租赁系统这个复杂的生态中,提升整体效率是每个企业都渴望达成的目标。首先,优化业务流程是实现高效运行的基础。通过分析目前的流程,找出冗余环节并进行简化,能够帮助企业缩短审批时间,提高客户满…...
Git 入门(一)
git 工作流如下: 命令如下: clone(克隆): 从远程仓库中克隆代码到本地仓库checkout (检出):从本地仓库中检出一个仓库分支然后进行修订add(添加): 在提交前先将代码提交到暂存区com…...
pyinstaller冻结打包多进程程序的bug:无限创建进程直至系统崩溃
前面写过两篇相关的文章: PyQt应用程序打包Python自动按键 这两篇文章都没有提到下面的这个重要问题: 采用Pyinstaller冻结打包多进程程序时,必须非常小心。这个技术线在Windows上会有一个非常严重的Bug。直接运行打包后的程序会造成无限创…...
OSI模型的网络层中产生拥塞的主要原因?
( 1 )缓冲区容量有限;( 1.5 分) ( 2 )传输线路的带宽有限;( 1.5 分) ( 3 )网络结点的处理能力有限;( 1 分…...
服务器开发 的设计模式(Design Patterns)核心知识
服务器开发的设计模式(Design Patterns)核心知识 在现代软件开发中,设计模式是一组为解决特定问题而重用的解决方案。它们是经过时间考验的最佳实践,为开发人员提供了一种有效的解决方案来应对常见的软件设计问题。特别是在服务器…...
智能工厂的设计软件 应用场景的一个例子: 为AI聊天工具添加一个知识系统 之20 再次重建 之5 项目文件三大部 整“拼”项目文档总述
本文要点 ]本项目的项目文件中的三个Part终于“拼”出来的(个别用词可能还需斟酌,但样子、格式和意思 差不多): Part1【凡间-AI众生】 人性化&去中心化-个体人生观 语言有关(语言交流-经验常识实践 信条 行为主义 随机数-本质偶然的 想…...
Lucas-Kanade光流法详解
简介:个人学习分享,如有错误,欢迎批评指正。 光流(Optical Flow)描述的是图像序列中各像素点随时间的运动情况,是计算机视觉中的基本问题之一。光流问题涉及尝试找出一幅图像中的许多点在第二幅图像中移动的…...
基于YOLO5的机械臂视觉抓取实现
前言: 机器人视觉系统标定是保证机器人精确运动和控制的关键环节之一。通过对机器人的运动学进行分析,可以精确计算出机器人末端执行器的位姿信息,从而实现对目标的精准定位和控制。相机标定是计算机视觉和图像处理中的重要步骤,标…...
Git 仓库与文件管理笔记
Git 的三种仓库概念 本地仓库 (Local Repository) 位于本地 .git 文件夹中通过 git init 或 git clone 创建存储完整的项目历史和分支信息 远程仓库 (Remote Repository) 位于 GitHub、GitLab 等平台服务器使用 git remote -v 查看所有远程仓库默认远程仓库名通常为 origin 工…...
Qt 5.14.2 学习记录 —— 오 信号与槽机制(2)
文章目录 1、信号与槽的参数2、为什么要有信号槽机制?3、断开并重新连接4、槽函数lambda写法 1、信号与槽的参数 信号和槽可以带参数,当信号带有参数时,槽的参数必须和信号的一致,此时发送信号就可以给信号函数传递实参ÿ…...
043_小驰私房菜_MTK Camera,Hal层将camera型号写到property属性中
【问题背景】 app层需要知道当前设备的摄像头型号,然后做一些差异化处理。底下如何上报这个摄像头型号? 【分析】 在kernel和hal层,都是有地方能获取到当前摄像头的型号,就看在哪里添加方便。获取到摄像头硬件型号后,将其写入到property属性, 然后app就可以通过读取该…...
Java线程
目录 一、线程入门 二、线程同步 三、死锁 四、线程的方法 五、线程的流程图 六、线程池 一、线程入门 1.进程:每一个软件都是一个进程。 2.线程:进程是由多个线程组成的。 3.进程和线程的关系:一个进程是对应一个或者是多个线程的。…...
JMeter 的 If Controller:开启性能测试的智能大门
嘿,宝子们!今天咱们就来聊聊 JMeter 里超级厉害的 If Controller,它就像是一把神奇的钥匙,能帮我们打开灵活测试的大门,让你的测试计划变得更加智能和高效。 一、If Controller 初印象 想象一下,你正在指…...
node内置模块之---os 模块
os 模块的作用 os 模块是 Node.js 的一个核心模块,提供了与操作系统交互的一些功能。它使得 Node.js 应用可以访问操作系统的底层信息,并执行一些系统级的操作,比如文件系统操作、环境变量、进程管理等。 os 模块的相关api 文件系统路径操…...
PgSQL如何用cmd命令行备份和还原数据库
一、备份 备份为压缩的二进制格式(通常更快且占用空间更少) pg_dump -U username -Fc -h hostname -p port -d dbname -F p -f backup.sql-U username:指定连接数据库的用户名(默认是 postgres)。-Fc:备…...
neo4j学习笔记
图数据库 图数据库是基于图论实现的一种NoSQL数据库,其数据存储结构和数据查询方式都是图论为基础的,图数据库主要用于存储更多的连接数据。 图论(GraphTheory)是数学的一个分支。图论以图为研究对象,图论的图是由若干…...
Halcon 显示异常
//For Halcon System HOperatorSet.SetSystem("clip_region", "false"); set_system( clip_region, false) *旋转 hom_mat2d_identity (HomMat2DIdentity1) hom_mat2d_rotate (HomMat2DIdentity1, rad( 90), 0, 0, HomMat2DRotate) affine_trans_region …...
2021年3月多省联考《申论》B卷真题解析
2021年福建公务员考试申论试题(乡镇卷) 材料一 在传统乡镇布局中,部分乡镇面积小、人口少,但管理机构、干部职数、机构编制、财政投入均不少,行政运行成本较高。合理调整乡镇行政区划,有助于统筹设置乡镇服…...
Mac iTerm2集成DeepSeek AI
1. 去deepseek官网申请api key,DeepSeek 2. 安装iTerm2 AI Plugin插件,https://iterm2.com/ai-plugin.html,插件解压后直接放到和iTerms相同的位置,默认就在/Applications 下 3. 配置iTerm2 4. 重启iTerm2,使用快捷键呼出AI对话…...
主机A与主机B建立TCP连接的三次握手过程
( 1 )主机 A 的 TCP 向主机 B 发出连接请求 SYN 报文段(第一次握手)。( 1 分) ( 2 )一旦包含 SYN 报文段的 IP 数据报到达主机 B , SYN 报文段被从数据报…...
vue3 vite 动态加载路由遇到的问题
记录一下动态加载路由遇到的问题 正常使用import引入静态路由是没问题的 component: () > import(/components/ExampleComponent.vue)动态引入的时候写成import就不行了 由于后端给的路由格式比较反人类…我这边先递归把获取到的数据格式做了一个整合. const processedDa…...