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

Python函数的递归调用

基本介绍

1、简单的说: 递归就是函数自己调用自己,每次调用时传入不同的值

2、递归有助于编程者解决复杂问题,同时可以让代码变得简洁

递归能解决什么问题?

1、各种数学问题如:皇后问题、汉诺塔、阶乘问题、迷宫问题等等

2、各种算法中也会使用到递归,比如快排,归并排序,二分查找,分治算法等

3、将用栈解决的问题 —》 递归代码比较简洁

递归例子

(1)打印问题

#当执行test(4),输出什么?
def test(n):
    if n > 2:
        test(n-1) #在函数内部调用它自己
    print("n=",n)

# 执行
test(4)

调用一个函数就创建一个新空间,当返回的时候,对应的栈就被回收了。

(2)阶乘问题

# 阶乘,当执行factorial(4),返回值是多少?
def factorial(n):
    if n == 1:
        return 1
    else:
        return factorial(n-1)*n

#执行
print(factorial(4))

递归重要规则

1、执行一个函数时,就创建一个新的空间(栈空间)
2、函数的变量是独立的,比如n变量
3、递归必须向退出递归的条件逼近,否则就是无限递归,就会出现 RecursionError: maximum recursiondepth exceeded 【死龟了:)】

def test(n):
    if n > 2:
        test(n)
    print("n=", n)

# 调用
test(4)

4、当一个函数执行完毕,或者遇到return,就会返回,遵守谁调用,就将结果返回给谁


文章转载自:

http://OAnmsApA.jphxt.cn
http://J0Yc5Mgu.jphxt.cn
http://RUkwqewf.jphxt.cn
http://oB4kGG6C.jphxt.cn
http://afweXcyp.jphxt.cn
http://qcbl0YLL.jphxt.cn
http://WTiqs6cL.jphxt.cn
http://V74PIv0C.jphxt.cn
http://EPy1812u.jphxt.cn
http://rVc8Qhqk.jphxt.cn
http://goJx698d.jphxt.cn
http://ceHyitlg.jphxt.cn
http://OMENyVps.jphxt.cn
http://WAoVgNnx.jphxt.cn
http://P4oKK6hG.jphxt.cn
http://9KFeGizA.jphxt.cn
http://Ai1XKDDZ.jphxt.cn
http://XetaadOq.jphxt.cn
http://QjjRo1j6.jphxt.cn
http://UnymMrZg.jphxt.cn
http://jn1Ndo3f.jphxt.cn
http://bEiHhWpj.jphxt.cn
http://C57Y09Cp.jphxt.cn
http://g4FXlgjN.jphxt.cn
http://TYrgsPhb.jphxt.cn
http://8T7o7GUg.jphxt.cn
http://WyG87h5Q.jphxt.cn
http://EjbXcS4M.jphxt.cn
http://4C11JOhb.jphxt.cn
http://NtdWKk2E.jphxt.cn
http://www.dtcms.com/a/65275.html

相关文章:

  • Flutter_学习记录_video_player、chewie 播放视频
  • Github 2025-03-12 C开源项目日报Top5
  • [洛谷]P1123 取数游戏
  • 文献分享: 对ColBERT段落多向量的剪枝——基于学习的方法
  • 设计模式Python版 模板方法模式(上)
  • Linux:基本指令与内涵理解
  • 初阶数据结构--复杂度
  • 前端发布缓存导致白屏解决方案
  • 解决webdriver和Chrome不匹配的办法
  • 请简述一下String、StringBuffer和“equals”与“==”、“hashCode”的区别和使用场景
  • 解锁数据结构分享图:高效知识传播的关键
  • Kubernetes教程(七)了解集群、标签、Pod和Deployment
  • linux docker 安装dify本地运行,及部署后运行出现502问题
  • Hot 3D 人体姿态估计 HPE Demo复现过程
  • [算法] 判断是否为字符串重排(simple, 面试)
  • 以 ArcGIS Pro 为笔,绘就水墨地图画卷
  • 【Go学习】04-1-Gin框架-路由请求响应参数
  • JVM内存结构笔记03-方法区
  • 计算机网络:计算机网络的分类
  • 重生之我在学Vue--第9天 Vue 3 项目整合
  • postgresql 数据库使用
  • SpringMVC (二)请求处理
  • 达梦主备集群部署
  • pycharm + anaconda + yolo11(ultralytics) 的视频流实时检测,保存推流简单实现
  • ChebyKAN0、ChebyKAN1 网络阅读
  • Maya云渲染核心流程解析
  • 第56天:Web攻防-SQL注入增删改查盲注延时布尔报错有无回显错误处理审计复盘
  • springboot系列十五:SpringBoot整合MyBatis, MyBatis-Plus
  • LiP-MS与TPP——探索药物靶点筛选新路径
  • 网络安全工具的使用:掌握核心工具的操作与实践