c语言实验 函数部分C/C++经典程序训练2—斐波那契数列

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;

}






发布了26 篇原创文章 · 获赞 0 · 访问量 421

猜你喜欢

转载自blog.csdn.net/weixin_45726784/article/details/103336455