c语言题目 兔子繁衍问题 希望能给我详细讲讲思路 ,

c语言题目 兔子繁衍问题 希望能给我详细讲讲思路 ,,第1张

#include "stdio.h"

int onemonth=1

int twomonth=0

int other=0

int main()

{

int n

int i=0

printf("请输誉启入慎虚伍一个正整数:")

scanf("%d",&n)

for(i=1i++)

{

int a=onemonth,b=twomonth,c=other

onemonth=c

twomonth=a

other+=b

if(onemonth+twomonth+other>=n)

{

printf("第%d个月数量将达到%d,为:%d\n",i,n,onemonth+twomonth+other)

break

}

}

return 0

}

思路很简单,就是循环月数+1,把兔子分为宽或3类,一个月后能繁衍的,2个月后能繁衍的,3个月后能繁衍的,每次循环统计每类的个数就行了,一个简单的逻辑问题

方法一、用递归。

方法二、把兔子定义成结构,每个兔核液子自带计时器变量,繁殖就是新建节点,构建结构链表。每次拿氏仿循环遍历所有节点的计时变量大于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

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12556514.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存