8-2c语言编程题假设一对小兔的成熟期是一个月,即一个月可长-查字典问答网
分类选择

来自何友金的问题

  8-2c语言编程题假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖

  8-2c语言编程题

  假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,一年以后可有多少对兔子(即当年12月份总计有多少对兔子,含成兔和小兔)?请编程求解该问题。

  参考答案:依题意,兔子的繁殖情况如图所示。图中实线表示成兔仍是成兔或者小兔长成成兔;虚线表示成兔生小兔。观察分析此图可发现如下规律:

  (1)每月小兔对数=上个月成兔对数。

  (2)每月成兔对数=上个月成兔对数+上个月小兔对数。

  综合(1)和(2)有:每月成兔对数=前两个月成兔对数之和。

  输出格式:

  每个月兔子对数的输出格式:"%4d"

  第12个月的兔子总数的输出格式:"nTotal=%dn"

1回答
2020-04-01 16:52
我要回答
请先登录
邵克志

  这题其实就是个斐波那契数列。小兔就是前个月的成兔数,然后上个月的成兔和小兔相加就是数列的前两个相加等于自己。所以代码如下 我比上面的答案时间快多了,他那种成指数级增长的递归调用你试试m=40,他会慢死的

  #include <stdio.h>

  int main(void)

  {

  int i,tu1,tu2,tu3,m=12;

  tu1=1;

  tu2=1;

  printf("%4d%4d",tu1,tu2);

  for(i=3;i<=m;i++)

  {

  tu3=tu1+tu2;

  printf("%4d",tu3);

  tu1=tu2;

  tu2=tu3;

  }

  printf("nTotal=%dn",tu3);

  }

2020-04-01 16:57:01

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •