当前位置:首页 » 编程语言 » c语言兔子繁衍递归
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言兔子繁衍递归

发布时间: 2022-02-28 16:53:35

1. c语言题老师留的 兔子繁殖问题,用递归函数的方法做。 个位大神编一个然后写下答案请写上兔子多少只

//兔子的对数,就是Fibonacci数列

//1 1 2 3 5 8 13 21 34 55 89 ...

#include<stdio.h>
intf(intn)
{
if(n<3)
return1;
else
returnf(n-2)+f(n-1);
}
voidmain()
{
intn;
scanf("%d",&n);
printf("%d年后,有兔子%d只. ",n,f(n));
}

2. 语言用递归法解兔子繁殖问题(斐波那契数列),求每月的兔子数目。

if (n=1||n=2)
改成
if (n==1||n==2)

3. c语言:兔子繁殖问题

兔子的对数,就是Fibonacci数列
#include <stdio.h>
long f(long n)
{
if(n<3) return 1;
else return f(n-2)+f(n-1);
}
void main()
{
printf("一年后,有兔子%ld对.\n", f(12));
getch();
}
---------------------------------------------------------
1 1 2 3 5 8 13 21 34 55 89 ...

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

方法一、用递归。

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


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


return 0;


}

5. C语言递归的方法:有一对兔子,从出生后第3个月起每个月都生一对兔子的问题

可以考虑递归算法:

int Amount(int day)
{
if (day==10)
{
return 1;
}
else
{
return 2*(Amount(day-1)+1);
}
}

早说嘛。。。害的白写了个。。

这题可以多用几个递归函数解决,在这里我称不能生育的兔子为小兔,能生育的为大兔

int littleR(int month)
{
if (month==1)
return 0;
else
return bigR(month-1)+little(month-1);
}
int bigR(int month)
{
if (month==1)
{
return 1;
}
else if (month==2)
{
return 1;
}
else if (month==3)
{
return 1;
}
else
{
return bigR(month-1)+little(month-2);
}
}
int totalR(int month)
{
return littleR(month)+bigR(month);
}

注:这种增长速度的话很快兔子的数量就会增长到很大,所以如果month达到几十的话就会超过int范围,所以可以考虑用__int64代替int,另外到时候如果依然每次都递归的话运行速度也会变慢,可能要好几秒,好几分钟,甚至更长的时间才能算出结果,所以可以考虑用数组存每个递归函数算出的值,如:
littleR(int month)中else可写成
if (...)
{
...
}
else
{
if (a[month]!=0)
return month;
else
return a[month]=bigR(month-1)+little(month-1);
}
用这种方法可以适当提高运行速度。。。

6. C语言编程:兔子繁殖问题

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineM13
intmain()
{
inti;
longa[M]={1,1};
for(i=2;i<M;i++)
{
a[i]=a[i-1]+a[i-2];

}
for(i=0;i<M;i++)
{
printf("%d月兔子总数:%d ",i,a[i]);

}
getch();
return0;}

7. c语言兔子繁殖问题

你好 可以创建一个数组a。
a[0]和a[1]都为1。
之后每一项都遵循a[n]=a[n-1]+a[n-2]。用for循环写。
由此依次列出每一项。每一项使用\t隔开。
需要一个count变量。每输出一个值count++
如果count求余5为0,输出一个\n。
最后就可以做到如图的输出,请给好评~

8. C语言递归N个月兔子

#include<stdio.h>
intdigui(intn);
intmain(void)
{
intn=0;
scanf("%d",&n);
printf("%d ",digui(n));
return0;
}
intdigui(intn)
{
returnn>1?digui(n-1)+digui(n-2):1;
}

9. 兔子繁殖,C语言

#include<stdio.h>
intmain(void)
{
intn,i,a,b,c;
a=0;
b=1;
i=1;
printf("请输入兔子对数n=");
scanf("%d",&n);
while(b<n){
c=a+b;/*while里面一次循环是1个月*/
a=b;
b=c;
i++;
}
printf("至少%d月",i);
return0;
}

10. c语言关于兔子繁殖的问题

#include<stdio.h>
intmain()
{intf1,f2,f,i;
printf("1 1 ");
f1=f2=1;
for(i=3;i<31;i++)
{f=f1+f2;
printf("%d ",f);
f1=f2;
f2=f;
}
return0;
}