/*
本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。
欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。
我是一名有诗人气质的网络安全工程师
期待与你的思想交流碰撞出智慧的花火
水木清华
2020-03-11
统计出兔子总数
@param monthCount 第几个月
@return 兔子总数
*/
#include<iostream>
using namespace std;
//斐波那契数列函数
int getTotalCount(int monthCount)
{
int F[monthCount + 1];
F[0] = 1; //第一个月的兔子数,小兔子出生,然后开始长大。
F[1] = 1; //第二个月的兔子数,小兔子继续长大,慢慢变成老兔子。
F[2] = 2; //第三个月的兔子数,老兔子开始生小兔子了。后面出生的小兔子则与老兔子类似。
for(int i = 3; i < monthCount; i++)
{
F[i] = F[i-1] + F[i-2];
}
//返回第 monthCount 个月的兔子总数
return F[monthCount - 1];
}
//主函数,调用斐波那契数列函数的接口来得到每个月的兔子总数
int main()
{
int monthCount;
while(cin >> monthCount)
{
cout << getTotalCount(monthCount) << endl;
}
return 0;
}
/*
扩展:打印斐波那契数列(打印每个月的兔子总数)
*/
#include <iostream>
using namespace std;
//打印斐波那契数列,如超过100项,则需要一个可表示数值范围很大的数据类型,int型和long型貌似力不从心
unsigned long long Fibonacci(int num)
{
unsigned long long F[num + 1]; //初始化一个数组
F[0] = 1;
F[1] = 1;
F[2] = 2;
for(int i = 3; i<= num; i++)
{
F[i] = F[i-1] + F[i-2];
}
return F[num];
}
int main()
{
int n;
while(cin >> n)
{
//打印斐波那契数列,是逐项打印。当然,也可以选择只打印第 n + 1 项。
for(int i = 0; i <= n ; i++)
{
cout << "第" << i+1 << "项:" << Fibonacci(i) << endl;
}
}
return 0;
}