C语言计算第几个月兔子的对数能达到给定的数量N(斐波那契数列)

一、题目描述

第一个月有一对刚出生的兔子,它们长到第三个月就有了生育能力,以后每个月都生一对兔子。所以出生的兔子,都会在出生后的第三个月具有生育能力,且所有的兔子都不会死。

要求用户输入一个数字N,程序计算出到第几个月兔子的对数能达到N。

二、代码实现

这个问题里,ret=month++的用法值得关注。它的特点是,month虽然已经增长了1,ret得到的赋值还是month增长前的值。

#include <stdio.h>
#include <stdlib.h>


/* run this program using the console pauser or add your own getch, system("pause") or input loop */

int main(int argc, char *argv[]) {
    int fn=1;  //本月兔子总对数 
	int fn_1=1;  //上个月兔子总对数 
	int fn_2=1;  //上上个月兔子总对数 
	int N;      //我们要达到的兔子对数 
	int month=1;  //本月是第几月 
	int ret=1;    //这也是月份,它是我们最终的结果 
	scanf("%d",&N);  //从用户处获取要达到的兔子总对数 
	while(fn<N)   //当本月兔子总对数小于我们要达到的数量时,进行循环 
	{
		if(month>=3){   //前两个月,最初的那对兔子还没有成年,所以兔子数量无变化 
			fn=fn_1+fn_2;  //从第三个月开始,本月兔子数量等于上个月和上上个月的数量之和 
			fn_2=fn_1;   //把上上个月的兔子数量换成上个月的 
			fn_1=fn;     //把上个月的兔子数量换成本月的 
			
		}
		//月份递增,把月份增长前的数值赋给ret
		//因为我们是先计算本月的兔子数量,再变成新的一个月,然后再判断当前数量是否已达到N
		//所以月份总是超前了 
		ret=month++;    
	}
	printf("%d",ret);  //打印最终的结果 
    return 0;
}

 

 

如果这篇博文帮到了你,就请给我点个吧(#^.^#)

有疑问也欢迎留言~博主可nice啦,在线秒回ヾ(◍°∇°◍)ノ゙

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值