C语言编程题目 兔子繁衍问题?

Python07

C语言编程题目 兔子繁衍问题?,第1张

方法一、用递归。

方法二、把兔子定义成结构,每个兔子自带计时器变量,繁殖就是新建节点,构建结构链表。每次循环遍历所有节点的计时变量大于3的就新建一个节点插入链表。最后统计节点数量。

我用方法1来写:

#include <stdio.h>

int childbirth(int bMth,int gMth)//bMth:调用时传0,gMth:经过的最大月数

{

  int cnt=0,n=bMth,num=2

  while(n++<gMth+1)

      if(cnt++>2)

          num=num+childbirth(n,gMth+1)

  return num

}

int main()

{

  int i,n

  printf("请输入经过多少月:"),scanf("%d",&n)

  for(i=1i<=ni++)

      printf("经过%d个月后:兔子数量为:%d\n",i,childbirth(0,i))

  return 0

}

根据题意,得出以下结果:

年份:0 0.5 1 1.5 2 2.5 3 3.5 4 ...

兔子:1 1 2 3 5 8 13 21 34...

序号: 0 1 2 3 4 5 6 7 8...

所以发现规律:除前两个外,后面的则是等于前两个的种即:A0=1,A2=1,An=A(n-1)+A(n-2)

这样程序就可以开始编制了

#include "stdio.h"

main()

{

int year,total,i,a1,a2

printf("\n请输入多少年后:")

scanf("%d",&year)

a1=1

a2=1

for(i=2i<2*yeari++)

{

if(i%2==1)

{

a1=a1+a2

total=a1

}else{

a2=a1+a2

total=a2

}

}

printf("\n第%d年末总共会有%d对兔子",year,total)

}

#include <stdio.h>

main()

{

int i,tu1,tu2,tu3,m

tu1=1

tu2=1

pringf("请输入月份数(要求不大于24)")

scanf("%d",&m)

if(m==1||m==2)

{

printf("有一对兔子");

}

else if(m<2&&m<=24)

{

for(i=3i<=mi++)

{

tu3=tu1+tu2

tu1=tu2

tu2=tu3

}

printf("%d月的兔子数为#d\n",m,tu3)

}

else

{

printf("月份书输入不符合要求,程序结束\n")

}

}