Fibonacci数列
描述
1202年,意大利数学家Fibonacci出版了他的「算盘全书」。他在书中提出了一个关于兔子繁殖的问题:如果一对兔子每月能生一对小兔(一雄一雌),而每对小兔在他出生后的第三個月裡,又能开始生一对小兔,假定在不发生死亡的情況下,由一对出生的小兔开始,50個月后会有多少对兔子? 我们可以总结出fibonacci数列的定义如下:
f(0) = 0 f(1) = 1 f(n) = f(n-1) + f(n-2)
写一个程序输出f(n)的值(0≤n≤46)
输入
有多组测试数据,每组测试数据为单独一行,这一行中只有一个整数n(0≤n≤46),如果输入是-1,表示输入结束。-1不用处理。
输出
对每组测试数据,在单独的一行中输出f(n)。
输入样例 1
3 4 5 -1
输出样例 1
2 3 5
#include <bits/stdc++.h>
using namespace std;
long long fibonacci(int n) {
if (n == 0) {
return 0;
} else if (n == 1) {
return 1;
}
long long a = 0; // f(0)
long long b = 1; // f(1)
long long c; // f(n)
for (int i = 2; i <= n; i++) {
c = a + b; // f(n) = f(n-1) + f(n-2)
a = b; // ¸üРf(n-2)
b = c; // ¸üРf(n-1)
}
return c; // ·µ»Ø f(n)
}
int main() {
int months;
while(scanf("%d",&months) && months != -1)
{
long long rabbitPairs = fibonacci(months);
printf("%lld\n", rabbitPairs);
}
return 0;
}
如有侵权,联系删除
338

被折叠的 条评论
为什么被折叠?



