/* 本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师 期待与你的思想交流碰撞出智慧的花火 水木清华 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; }