假设狗一年1岁,第3年和第5年个生出一条小狗,第六年死亡,计算第n年狗的个数(不考虑公母)

来源:互联网 发布:济南 知乎 编辑:程序博客网 时间:2024/04/28 10:10

2种算法
先定义一个狗的class

class Dog:    year = 1    def is_dead(self):        return True if self.year >= 6 else False    def add(self):        self.year += 1    def proc(self):        return True if self.year == 3 or self.year == 5 else False

处理狗的增长问题

def prot(a):    num = 0    for i in range(len(a))[::-1]:        a[i].add()        if a[i].proc(): num += 1        if a[i].is_dead(): del a[i]    for i in range(num):        a.append(Dog())    return a

1,普通的for循环

def fordemo(n):    a = []    for i in range(n):        if i == 0:            a = [Dog()]        else:            a = prot(a)    return a# value = fun(6)value = fordemo(6)for row in value:    print row.year

2,递归,更加简单了

def fun(n):    if n == 1:        return [Dog()]    else:        return prot(fun(n - 1))value = fordemo(6)for row in value:    print row.year

用Python实现的,清晰明朗,哈哈

0 0
原创粉丝点击