您的位置:首页 > 其它

华为OJ(统计每个月兔子的总数)

2015-08-25 13:13 330 查看
描述
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
/**
* 统计出兔子总数。
*
* @param monthCount 第几个月
* @return 兔子总数
*/
public static int getTotalCount(int monthCount)
{
return 0;
}

知识点查找,搜索,排序
运行时间限制10M
内存限制128
输入输入int型表示month
输出输出兔子总数int型
样例输入9
样例输出34
题目叙述有问题,应该是初始有一只兔子而不是一对,每只兔子到第三个月开始每个月生一只兔子。
f(1)=1,f(2)=1,f(3)=2,f(4)=3......可以看出是斐波那契数列。

下面就好办了,可以直接用公式,也可以递归。

1 直接用公式:

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
void main()
{
int n;
scanf("%lf",&n);
printf("%d\n", (int)((powf(((1 + sqrtf(5)) / 2), n) - powf(((1 - sqrtf(5)) / 2), n)) / sqrtf(5)));
//system("pause");
}
2 递归

#include<iostream>
using namespace std;
int getCount(int n)
{
if(n==1||n==2)
return 1;
else
return getCount(n-1)+getCount(n-2);
}
int main()
{
int n;
cin>>n;
cout<<getCount(n);
//system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: