Python学习日记-递归函数
递归函数与数列问题
我们在中学阶段就遇到过数列通项问题,通项科An可写作:
An=Sn-Sn-1(Sn表示前n项的和)
移项后,可表示为:
Sn=Sn-1+An
在这里,以一个数列的前3项为例:
S3=S2+A3
S2=S1+A2
即:S3=S1+A2+A3
将Sn看做一个函数,An看做一个形式参数
那么,任何Sn都可以看成S1+参数项。参数项已知,知道S1就可求Sn。S1就是第一项,我们把具体问题中第一项的值赋给S1即可。
举个例子,利用递归函数,求1至n间整数的和
def get_sum(n):if n == 1:return 1return get_sum(n - 1) + n
在这个问题中,第一项的值明显为1,因此n=1时,返回1
当然,也可写n=0,返回0
再举例,利用递归函数,求1至n间整数的阶乘
def product(n):if n == 0:return 1result = product(n - 1) * nreturn result
求阶乘问题中,第一项也为1,但是,这里n=0时,不可return 0 了。因为0的阶乘仍然是1,所以n=0,仍然rerurn 1。
在递归函数中,要跳出这个套娃过程,应使用return语句,而不是break语句,因为break用以跳出while、for循环。
Python学习日记-递归函数相关推荐
- Python学习日记-day1基础篇 字符 输出 注释
Python学习日记-day1基础篇 字符 输出 注释 by北栀一刺 # -*- coding: utf-8 -*- """ Spyder EditorThis is a ...
- python学习日记(第一周)
python学习日记(第一周) 前言: 无论出于什么目的,学个程序语言吧.之前学过一点点基础语法,然后就搁置了两年,日记仅作为个人记录,有问题还望不吝赐教 其实这玩意儿应该每次学一部分记录一部分的,好 ...
- Python学习日记-pandas操作学习
Python学习日记-pandas模块学习 根据需求筛选数据 绘制柱状图-利用pandas绘制 绘制柱状图-利用matplotlib绘制 绘制柱状图-两组数据比较 绘制柱状图-叠加柱状图 绘制饼状图 ...
- 菜菜的Python学习日记 | Python类实验代码分享
系列索引:菜菜的Python学习日记 | Python从入门到入土详解 Python类实验代码分享 编写程序,实现以下功能. (1)创建员工类Employee,属性有姓名name.能力值ability ...
- 菜菜的Python学习日记 | 正则表达式你必须了解的知识点
系列索引:菜菜的Python学习日记 | Python从入门到入土详解 文章目录 常用规则 Python对正则表达式的支持 常用规则 符号 解释 示例 说明 . 匹配任意字符 b.t 可以匹配bat ...
- python学习日记2-3周
python学习日记2-3周 怠惰怠惰 improt 导入 import phone.apple.iphone6 import phone.apple.iphone7 import phone.sam ...
- Python学习日记——罗马数字转整数
Python学习日记004--罗马数字转整数 题目来源:LeetCode题库--罗马数字转整数 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 ...
- [Python学习日记] 文件与文件系统(一)
[Python学习日记] 文件与文件系统(一) 目录 Python3 File(文件) 方法 open() 方法 file 对象 目录 Python3 File(文件) 方法 open() 方法 Py ...
- Python学习日记:求解由四个数字组成的四位数个数
看见这个问题时,我们很容易想到我们学习过的排列组合知识点:显然用四个数字组成四位数(这些四位数互不相同)就是一个关于排列的问题:用数学的方法可以知道.那么怎么用Python运行解决呢?这就是本次学习日 ...
最新文章
- Http 请求头中的 Proxy-Connection
- 搞垮服务的20条原则
- liunx下的DNS配置
- Exchange 2016 (登陸賬號匯出電子郵件地址)
- Python字符串介绍
- P5283-[十二省联考2019]异或粽子【可持久化Trie,堆】
- 可以批量修改文件名、文件后缀的实用工具
- php zitian虚拟主机配置_虚拟主机的发展
- struts2:表单标签
- Linux:管线命令
- 算法(0)—— 打造一个C开发库
- 读Zepto源码之集合操作
- 2022年(上半年)信息系统项目管理师考试-综合知识真题及解析(一)
- 微服务架构如何进行解耦?
- gamma原理及快速实现算法(C/C++)
- 编程语言的自举之路——从机器码到高级语言
- 一位CEO给员工的防疫指南:在不确定的世界强悍地活
- 自动取款机 UI开发总结
- matlab中电压幅值不对,基于MATLAB的SPWM电压型逆变器的仿真与分析
- STM32F103RET6 功能引脚