泪灬忆 发表于 2020-3-3 18:29

一道数学题

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子 ,假如兔子都不死,问每个月的兔子总数为多少?

大佬们,这用Python该怎么写

轻描淡写9714 发表于 2020-3-3 19:45

斐波那契数列?参考下C的递归就能写出来了吧

泪灬忆 发表于 2020-3-3 20:02

轻描淡写9714 发表于 2020-3-3 19:45
斐波那契数列?参考下C的递归就能写出来了吧

我是初学者{:1_907:}

轻描淡写9714 发表于 2020-3-3 20:05

泪灬忆 发表于 2020-3-3 20:02
我是初学者

不会Python。无可奈何

PLDancer 发表于 2020-3-3 20:53

以下是仓促写的,没优化(比如省略一些),就是说一下我的看法,如果错了,我很乐意你指正。
def 生兔子(月份):
\t兔子数列表=#各月的兔子数。
\t月序=0
\twhile 月序 <月份:
\t\t变动兔子数列表=[兔子数列表,兔子数列表,兔子数列表]
\t\t兔子数列表=[变动兔子数列表,变动兔子数列表,变动兔子数列表+兔子数列表]
\t兔子总数=兔子数列表+兔子数列表+兔子数列表
\tprint('兔子总数为:%d'&(兔子总数))

六道佩奇 发表于 2020-3-3 20:58

本帖最后由 六道佩奇 于 2020-3-3 21:15 编辑

此处计算得到的兔子数量单位为:“对”
def num_rabbit(n):
      if n == 1:
                return 1
      elif n == 2:
                return 1
      elif n >= 3:
                return num_rabbit(n-1) + num_rabbit(n-2)

if __name__ == '__main__':
      n = int(input("please input month:"))
      print(num_rabbit(n))

sjtuzjt 发表于 2020-3-3 21:14

本帖最后由 sjtuzjt 于 2020-3-3 21:37 编辑

哦,每个月都生一个,还以为隔一个月生一个。
def num_rabbit(n):
    a,b,c=1,1,2
    for _ in range (n):
      yield a
      c=a+b
      a,b=b,c
if __name__ == '__main__':
    while True:
      n = int(input("please input month:"))
      print(list(num_rabbit(n)))
使用生成器,打印每个月的数量。

泪灬忆 发表于 2020-3-3 22:41

PLDancer 发表于 2020-3-3 20:53
以下是仓促写的,没优化(比如省略一些),就是说一下我的看法,如果错了,我很乐意你指正。
def 生兔子( ...

感谢大佬

泪灬忆 发表于 2020-3-3 22:42

sjtuzjt 发表于 2020-3-3 21:14
哦,每个月都生一个,还以为隔一个月生一个。
def num_rabbit(n):
    a,b,c=1,1,2


感谢大佬,虽然有点看不懂,但我会继续努力的

泪灬忆 发表于 2020-3-3 22:44

六道佩奇 发表于 2020-3-3 20:58
此处计算得到的兔子数量单位为:“对”
def num_rabbit(n):
      if n == 1:


感谢大佬的代码
页: [1] 2
查看完整版本: 一道数学题