题目:
有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
分析:
- 这个月兔子的总数,就是上个月的兔子总数加上新生出来的兔子:f(n) = f(n-1) + x
- 求这个月新生出来多少兔子,就是求这个月已经有生育能力的兔子是多少
- 这个月已经有生育能力的兔子,就是上上个月所有的兔子:x = f(n-2)
- 递推式:f(n) = f(n-1) + f(n-2),这是一个典型的斐波那契数列问题
1、循环结构(结构不清晰,可读性差;但非递归,时间开销小)
m1 = 1 #index=0
m2 = 1 #index=1
count = 2 #index=2,所以count=2,当然count和month配套使用
month = 10
if month == 1:
print(m1)
else:
print(f'{
m1} {
m2}',end=' ')
while count < month: #如果count=3,则count <= month
m3 = m1 + m2
print(m3,end=' ')
m1 = m2
m2 = m3 #循环结构
count += 1
上面代码封装成类:
class Rabbit_class:
def __init__(self,month):
self.m1 = 1
self.m2 = 1
self.count = 2
self.month = month
def rabbit_num(self):