Fibbonacci Number
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 18546 Accepted Submission(s): 8748
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.
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
Sample Output
2 3 5题意:题目很简单,就是求前五十项斐波那契数,用递推和递归均可,只是在递归用数组保存一些已经求出来的数,以免在求。代码如下:#include<stdio.h> #include<string.h> __int64 dp[100]={0,1,}; __int64 fibnaqi(__int64 n) //函数返回值也要定义为64位型,防止爆栈。 { if(n==0) return 0; //当n=0或1时,有确定的值,直接返回。 if(n==1) return 1; if(dp[n]>0) return dp[n];//当dp[n]>0,则表示这一项已经求出(为求出的都初始化为零了),直接返回。 else dp[n]=fibnaqi(n-1)+fibnaqi(n-2);//斐波那契递推公式。 return dp[n]; } int main() { int n,i; while(scanf("%d",&n)&&n!=-1) { for(i=2;i<=n;i++) dp[i]=0; printf("%I64d\n",fibnaqi(n)); } return 0; }