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;
}