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

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实现的,清晰明朗,哈哈

猜你喜欢

转载自blog.csdn.net/u010154424/article/details/52123777
今日推荐