Fibbonacci Number
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 25027 Accepted Submission(s): 11501
Problem Description
Your objective for this question is to develop a program which will generate a fibbonacci number. The fibbonacci function is defined as such:
f(0) = 0
f(1) = 1
f(n) = f(n-1) + f(n-2)
Your program should be able to handle values of n in the range 0 to 50.
Input
Each test case consists of one integer n in a single line where 0≤n≤50. The input is terminated by -1.
Output
Print out the answer in a single line for each test case.
Sample Input
3
4
5
-1
4
5
-1
Sample Output
2 3 5
Hint
Note:
you can use 64bit integer: __int64
就是斐波那契数列嘛,然后别用递归做,时间复杂度太大了。改用循环做就行了。
代码附上:
#include <iostream>
#include<math.h>
#include <iomanip>
#include<cstdio>
#include<string>
#include<map>
#include<vector>
#include<list>
#include<algorithm>
#include<stdlib.h>
#include<iterator>
#include<sstream>
#include<string.h>
using namespace std; long long F(int n)
{
if(n==)
{
return ;
}
else if(n==)
{
return ;
}
return F(n-)+F(n-); } int main()
{
int n;
while(cin>>n)
{
if(n==-)
{
break;
}
long long sum[]={};
// cout<<sum[0]<<endl;
sum[]=;
sum[]=;
for(int i=;i<=n;i++)
{
if(i==||i==)
{
continue;
}
else
{
sum[i]=sum[i-]+sum[i-]; }
}
cout<<sum[n]<<endl; }
return ;
}
感觉如果把sum函数放在 循环的外面可能会让速度更快点。