#include <iostream>
using namespace std;
int f(int n)
{
int g;
if (n==1)
g=1;
else
if (n==2)
g=2;
else
g=f(n-1)+f(n-2);
return g;
}
int main() {
int a;
int m;
while (cin >> a ) { // 注意 while 处理多个 case
m=f(a);
cout<<m<<endl;
}
return 0;
}
// 64 位输出请用 printf(\"%lld\")
实际上题目有提示了,可以猜出来用斐波那契数列。
分析:从后往前推
设求吃糖果
第n天可以选择吃一个或者两个,那么相应的第n-1天的选择数为f(n-1)与f(n-2),由此得到递推式f(n)=f(n-1)+f(n-2)。
题目中天数取值范围为0到20,不太大,因此可以直接用递归法就可以快速解决。

京公网安备 11010502036488号