语言兔子生兔子的问题DG
C语言兔子生兔子的问题
有一对兔子,从出生后第 3 个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
兔子的规律为数列:1, 1, 2, 3, 5, 8, 13, 21 ....
下面使用了迭代、递归和数组三种解法。
【方法一】使用迭代:
#include stdio.h
int main()
{
long f1=1, f2=1; // 兔子的数量
int i; // 循环次数
int n; // 要计算的月份
printf("输入要计算的月数:");
scanf("%d", n);
// 计算出循环次数
if(n%2==1){
n = (n+1)/2;
}else{
n = n/2;
}
for(i=1;i=n;i++){
printf("第%d个月有%d只\n", i*, f1);
printf("第%d个月有%d只\n", i*2, f2);
f1=f1+f2; /*前两个月加起来赋值给第三个月*/
f2=f1+f2; /*前两个月加起来赋值给第三个月*/
}
return 0;
}
运行结果:
输入要计算的月数:10
第1个月有1只
第2个月有1只
第3个月有2只
第4个月有3只
第5个月有5只
第6个月有8只
第7个月有13只
第8个月有21只
第9个月有34只
第10个月有55只
【方法二】使用递归:
#includestdio.h
int Feibonacci(int n){
if(n==1||n==2)
return 1;
else
return Feibonacci(n-1)+Feibonacci(n-2);
}
int main(){
int n; // 要计算的月份
printf("输入要计算的月数:");
scanf("%d", n);
printf("%d个月的兔子总数为%d\n", n, Feibonacci(n));
return 0;
}
运行结果:输入要计算的月数:10
10个月的兔子总数为55
递归看上去非常符合逻辑,但是这种递归效率是非常慢的,不信你计算20, 30, 40 个月的兔子数试试,明显比另外两种方法慢多了!
【方法三】使用数组:
#includestdio.h
void main()
{
int a[100] ,i,n;
printf("请输入月数:");
本身就拥有一个庞大的家族企业scanf("%d",n);
a[0]=a[1]=1;
for(i=2;in;i++)
a[i]=a[i-1]+a[i-2];
printf("第%d个月的兔子为:%d\n", n, a[n-1]);
}
运行结果:请输入月数:10
第10个月的兔子为:55
喜欢的朋友可以关注转发一下咱们的文章,想学习的小伙伴也可以用进群一起学习!
群号:
合肥华夏白癜风医院怎么样太原哪家医院治疗妇科好
长沙治疗男性功能障碍哪家好
-
2022年第三季度利率欠债供给展望
以前利息面世数尾声,国利息面世将放量;还有2022年月末利息券利息储存量...
2024-12-19
-
公募行业出乎意料新规来了!薪酬递延支付不少于3年,基金经理递延支付金额不低于40%
每经美联社:黄小聪 每经编辑:肖芮冬 现在,本公司发布《公开募集证券交...
2024-12-14
-
魅族19疑似曝光,魅友:不在辉煌时驻足,不在低谷时转身离去
从骁龙8 Gen1中央处理器发布新闻便,市场竞争中依然都从未关于Lumia全面性的...
2024-12-10
-
真正高级的中年女人,穿衣短裙有这5个特点,一看就是见过大世面
有一类女孩,她们虽然没有人更高的颜值,但一看她们的身着衣衣著,就可以...
2024-11-27
-
凯特王妃高调出席社会活动!穿1万的西装变身霸总,把威廉都衬成保镖
马修王后可以说是英国王室的装潢,每次成现在观众面前,外形都十分的端庄...
2024-11-14
-
省疾控中心提示:即刻配合社区登记报告,即刻做好居家健康监测
近期,国内登革热还没有完全阻断,北京、汉口等地又出现了社会面的登革热...
2024-11-12