华为机试在线训练_统计每个月的兔子总数(斐波那契数列)
统计每个月兔子的总数
http://www.nowcoder.com/questionTerminal/1221ec77125d4370833fd3ad5ba72395
/* 本文系「人工智能安全」(微信公众号)原创,转载请联系本文作者(同博客作者)。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师 期待与你的思想交流碰撞出智慧的花火 水木清华 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; }
大厂面试 文章被收录于专栏
分享有用的面试经历,倾吐有心的面试感悟,讲述有趣的面试故事,以飨读者。 常用语言是C++,编程力求规范整洁,题解清晰完整,像写诗一样去写代码。 本专栏文章系「人工智能安全」(微信公众号)原创,转载请联系本文作者。 欢迎你转发分享至朋友圈,并给予「关注、星标、点赞」三连支持。互相欣赏,互相批判。 我是一名有诗人气质的网络安全工程师,期待与你的思想交流碰撞出智慧的花火。