时间限制:1 秒内存限制:32 兆特殊判题:否提交:6009解决:1799
题目描述:
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:
输入:
输入可能包含多个测试样例,对于每个测试案例,
输入包括一个整数n(1<=n<=70)。
输出:
对应每个测试案例,
输出第n项斐波那契数列的值。
样例输入:
3
样例输出:
2
#include<stdio.h>
#include<stdlib.h>
long long fnb(int n)
{
long long f;
long long f1=0,f2=1;
if(n==0) f=0;
if(n==1) f=1;
else
{
for(int i=2;i<=n;i++)
{
f=f1+f2;
f1=f2;
f2=f;
}
}
return f;
}
int main()
{
int x;
while(scanf("%d",&x)!=EOF)
{
printf("%lld\n",fnb(x));
}
}
总结:
1.使用递归算法虽然简单直观,但是很耗时。此列就不宜使用递归,会超时限。
2.斐波那契数列的返回值不能使int型的,太小了。应用long long型。
本文介绍如何高效计算斐波那契数列的第n项,并通过实例演示了使用递归与迭代方法的优缺点。重点讨论了内存消耗与时间效率,提供了优化斐波那契数列计算的解决方案。
1111

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



