目录
[七、 推荐资料](#七、 推荐资料)
python细胞分裂
第十五届蓝桥杯青少年组python比赛选拔赛真题
一、题目要求
(注:input()输入函数的括号中不允许添加任何信息)
1、编程实现
有1个细胞,从第二天开始,它每天早上会分裂出1个新的细胞(分裂这天算新细胞的第一天)每个新分裂的细胞从它出生的第 3天开始,每天早上也会分裂出 1个细胞。
请计算出到第 N(2≤N≤30)天晚上共有多少个细胞(假设细胞不会死亡)。
例如:N=5,第5 天晚上共有 8 个细胞。
2、输入输出
**输入描述:**只有一行,输入一个正整数 N(2≤N≤30)
**输出描述:**只有一行,一个整数,即到第 N 天晚上细胞的总个数
输入样例:
5
输出样例:
8
二、算法分析
- 题目相对而言难度不大,小朋友看到这种题目,认真分析相应的数据,可以找到一定的规律
- 从第三天开始可以看到,第三天是3个,等于第一天1个加上第二天2个
- 第四天是5个,等于第二天2个加上第三条3个
- 第五天是8个,等于第三天3个加上第四天5个
- 所以规律就是从第三天开始,之后的每一天都等于前一天加上前2天的和
- 本题的实现方法有很多种,小兔子老师这里采用递归的方式实现
三、程序编写
python
def cell_division(num):
if num == 1:
return 1
if num == 2:
return 2
else:
return cell_division(num-1) + cell_division(num-2)
n = int(input())
res = cell_division(n)
print(res)
四、程序说明
- 自定义了一个细胞分裂的函数cell_division
- 函数中有三个条件分支,当num等于1时,表示第一天,此时返回1,表示只有一个细胞。
- 当num等于2时,表示进行了一次分裂,此时返回2,表示有两个细胞
- 当num大于2时,意味着细胞进行了多次分裂,此时递归调用自己两次,并将两次的返回值相加,等于前一次分裂的细胞数量加上前两次分裂的细胞数量,即为当前分裂的细胞数量
- 主程序中通过输入一个整数n
- 然后调用cell_division函数计算最终的细胞数量,并将结果打印出来
五、运行结果
python
5
8
六、考点分析
难度级别:一般,这题相对而言还是有一点小难度,难在分析数据找到规律,具体主要考查如下:
- 学会分析题目,找到解题思路
- 学会简单的算法知识的应用
- input函数:Python 中 input() 函数接受一个标准输入数据,返回为 string 类型。
- int函数:强制将传入对象转换成整数类型
- 学会for循环的使用:for循环可以遍历任何有序的项及列表元素等等。
- range函数:rang(a,b),循环的时候是不包括b的,所以我们这个案例中要转变一下,要想包含b,就应该写成range(a,b+1)
- 学会if...条件判断语句的使用:满足条件才执行相应的程序
- 学会if...else双分支语句的使用:满足条件执行一种处理程序,不满足执行另一种处理程序
- 学会函数的定义和使用,尤其是递归函数的使用
- print函数:用于打印输出,最常见的一个函数。
- 充分掌握分支语句、循环语句和递归函数相关操作的使用
PS:方式方法有多种,小朋友们只要能够达到题目要求即可!