- 题目描述:
-
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。斐波那契数列的定义如下:
- 输入:
-
输入可能包含多个测试样例,对于每个测试案例,
输入包括一个整数n(1<=n<=70)。
- 输出:
-
对应每个测试案例,
输出第n项斐波那契数列的值。
- 样例输入:
-
3
- 样例输出:
-
2
-
#include <iostream> using namespace std; //递归方法在n比较大的时候效率很低,直接超时 int f1(int n) { if(n==0)return 0; if(n==1)return 1; return f1(n-1)+f1(n-2); } //非递归方法效率高 //注意数据类型 //使用int提交失败,原因是答案错误 //将局部变量和返回值类型修改为long后ac long f2(int n) { if(n==0)return 0; if(n==1)return 1; long first=0; long second=1; long third; for(int i=2;i<=n;i++) { third=first+second; first=second; second=third; } return third; } int main() { int n; while(cin>>n) { cout<<f2(n)<<endl; } return 0; } /************************************************************** Problem: 1387 User: fuestck Language: C++ Result: Accepted Time:10 ms Memory:1520 kb ****************************************************************/