版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
函数的递归+contents目录递归函数的含义经典递归范例阅读角函数的递归01
什么叫递归函数?什么叫递归函数?简而言之,函数的递归就是在函数的定义中,函数内部的语句调用函数本身。举个例子,我们来计算非负整数的阶乘n!=1x2x3x...xn。简单分析一下:n!=1#当n=1n!=1x2=2#当n=2n!=1x2x3=6#当n=3n!=nx(n-1)!#当n>1时用函数f(n)表示,可以看出:f(n)=n!=1x2x3x...x(n-1)xn=(n-1)!xn=f(n-1)xn所以,f(n)可以表示为nxf(n-1),只有当n=1时需要特殊处理,其他情况就是n!=nx(n-1)!运算。
什么叫递归函数?递归函数是指在函数定义中直接或间接调用自身的函数。这是一种通过将问题分解为更小的同类子问题来解决问题的方法。核心特征:自调用性:在函数体内调用自身。基准条件(BaseCase):必须存在终止递归的条件。递推关系:每次调用都向基准条件推进范例:非负整数的阶乘n!#定义deffactorial(n):ifn==1:return1else:returnn*factorial(n-1)#调用foriin(range(1,10)):print(i,"!=",factorial(i))它的运行结果如下:1!=12!=23!=64!=245!=1206!=7207!=50408!=403209!=362880
递归函数的注意事项递归深度限制:Python默认递归深度约1000层(可通过sys.setrecursionlimit()修改)性能考虑:递归可能有额外的函数调用开销尾递归优化:Python不原生支持尾递归优化栈溢出风险:深度递归可能导致栈溢出
递归函数的适用场景问题具有自然递归结构(如树形结构遍历)子问题与原问题同构但规模更小代码可读性比极致性能更重要时
递归函数与循环的对比特性递归循环代码简洁性高中内存消耗较高(调用栈)低可读性问题自然表达时更优线性过程更清晰调试难度较高较低
经典递归范例02经典递归范例——阶乘计算
经典递归范例——阶乘计算
经典递归范例——斐波那契数列
经典递归范例——斐波那契数列
经典递归范例——数字各位求和
经典递归范例——数字各位求和
经典递归范例——列表元素求和
经典递归范例——列表元素求和
前面4个经典递归范例——总结
注:递归的简洁性以性能为代价(如斐波那契的指数级复杂度),实际开发中需权衡使用。阅读角03
汉诺塔问题汉诺塔问题就是递归问题的一个经典案例。汉诺塔问题源于印度一个古老传说。相传大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,任何时候,在小圆盘上都不能放大圆盘,且在三根柱子之间一次只能移动一个圆盘,如图所示。问应该如何操作?
汉诺塔问题汉诺塔问题的解决思路:我们可以先假设除a柱最下面的盘子之外,已经成功地将a柱上面的63个盘子移到了b柱,这时我们只要再将最下面的盘子由a柱移动到c柱即可。当我们将最大的盘子由a柱移到c柱后,b柱上便是余下的63个盘子,a柱为空。因此现在的目标就变成了将这63个盘子由b柱移到c柱。这个问题和原来的问题完全一样,只是由a柱换为了b柱,规模由64变为了63。因此可以采用相同的方法,先将上面的62个盘子由b柱移到a柱,再将最下面的盘子移到c柱。
汉诺塔问题以此类推,再以b柱为辅助,将a柱上面的62个圆盘最上面的61个圆盘移动到b柱,并将最后一块圆盘移到c柱。我们已经发现规律,我们每次都是以a或b中一根柱子为辅助,然后先将除了最下面的圆盘之外的其他圆盘移动到辅助柱子上,再将最底下的圆盘移到c柱子上,不断重复
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中体育与健康七年级《珍爱生命 预防溺水》教学设计
- 2026年药学三基知识考试试题及答案
- 2026年生态环境执法业务知识题库及答案
- 炎症性肠病量表(IBDQ)
- 消防安全课件
- 电力安全管理人员培训第三套试题附答案资料
- 地下洞室开挖施工监理实施细则
- 道路货物运输驾驶员资格考试A(答案)
- 船舶电工工艺试题答案
- 畜禽养殖技术试题 附答案
- 2026年高考数学命题特征分析及2027届高三复习备考策略讲座
- 学校中层竞聘情景面试试题库及答案
- CSCO 胆道恶性肿瘤诊疗指南 2026 版发布
- 2026年《中国下肢深静脉血栓诊疗临床指南(2026版)》
- DB31/T 678-2012城市高架道路养护技术规范
- 老年人中医保健知识健康讲座
- 《人类简史》荐书主题演讲课件
- 《机械现代设计方法》课件
- 《标准工时培训资料》课件
- 《管理学》课程思政教学案例
- 湖州南浔圣船混凝土有限公司年产50万立方米生态混凝土项目环境影响报告
评论
0/150
提交评论