博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
L3.九.递归
阅读量:6695 次
发布时间:2019-06-25

本文共 780 字,大约阅读时间需要 2 分钟。

# 递归  recursion ### 引题 计算10的阶乘 a = 1 for i in range(1,11):     a *= i print(a) # 换一种思路  递归 # 列如算 5! # 5! = (1*2*3*4)*5  = 4!* 5 # 4! = (1*2*3) * 4 = 3! * 4 # 3! = (1*2) * 3 = 2! * 3 # 所以 5! = (((1! * 2)* 3)* 4) * 5 # 所以 n! = (n-1)! * n         n>=2 # 结论: f(n) = f(n-1) * n    n>=2 def factorial(n):     if n == 1:         return 1     return factorial(n-1) * n print(factorial(10)) # 分析,当factorial(5)开始调用时 # 表达式变化为 第一次函数返回值 f(4) * 5 # 表达式变化为 第二次 (f(3)*4)* 5 # 表达式变化为 第三次 ((f(2)*3)*4) * 5 # 表达式变化为 第四次 (((f(1)*2)*3)*4) * 5 # 表达式变化为 第五次 (((1*2)*3)*4) * 5 # 可能出现的错误:超出最大递归深度 RecursionError: maximum recursion depth exceeded # 递归深度;递归需要函数调用自身,调用一次函数实际会调用多次函数,每调用一次称为深度加1,都会增加系统内存开支,所以python规定了最大深度 # 递归的好处: 一些问题用循环难以解决,递归思维教自然可以方便解决。

转载于:https://www.cnblogs.com/psy0508/p/9973557.html

你可能感兴趣的文章
使用load data infile来导入导出数据
查看>>
CompleableFuture
查看>>
嵌入式linux软件数据参数保存的三种方式
查看>>
Windows Server 08 R2+SQL 08 R2群集部署SOP系列
查看>>
数据结构与算法学习(三)(续)
查看>>
数据结构与算法学习(六)(续)
查看>>
我的友情链接
查看>>
[转载]信息化发展阶段的划分
查看>>
网页制作常用代码
查看>>
第10章 关联容器
查看>>
自动化运维工具ansible源码安装方法
查看>>
hyperscan 安装
查看>>
C语言基础之--printf函数
查看>>
Linux中环境变量文件及配置
查看>>
我的友情链接
查看>>
菜鸟学Linux 第106篇笔记 cobbler
查看>>
Realm数据库简介
查看>>
windows7快速切换ip批处理
查看>>
第二章 LYNC2010产品功能介绍
查看>>
Linux基础--进程管理和作业控制
查看>>