C/C++经典程序训练2—斐波那契数列
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
编写计算斐波那契(Fibonacci)数列的第n项函数fib(n)(n < 40)。
数列描述:
f1=f2==1;
fn=fn-1+fn-2(n>=3)。
Input
输入整数 n 的值(0 < n < 40)。
Output
输出fib(n)的值。
Sample Input
7
Sample Output
13
Hint
注意第1项和第2项的输出处理
Source
注意输出超限的问题
第一个代码是错误案例
#include<stdio.h>
#include <math.h>
int m(int n)
{
int f1=1,f2=1;
int f,i;
for(i=3;i<=n;i++)
{
f=f1+f2;
f1=f2;
f2=f;
}
return f;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",m(n));
return 0;
}
以上代码运行正确,但是输出超限,以下是正确的代码
#include<stdio.h>
#include <math.h>
int m(int n)
{
int f;
if(n==1)
f=1;
if(n==2)
f=1;
else if(n>=3)
f=m(n-1)+m(n-2);//采用递归思想,不然输出超限
return f;
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",m(n));
return 0;
}