斐波那契数列 为啥不对

img

#include<stdio.h>
int Fibon2(int n);
int main(void)
{
int n;
scanf("%d",&n);

   Fibon2(n);
  return 0;

}
int Fibon2(int n)
{

 int i=0,temp=0,num1=1,num2=1;   
        for(i=1;i<=n;i++)
        {
              temp=num1+num2;
              num1=num2;
              num2=temp;
              printf("%d\n",temp); 
         }
         return temp;
         

}


#include <stdio.h>
int fib(int n) {
    int num1 =1;
    int num2 = 1;
    int tmp;
    if (n <= 0) { // 等于0未判断
        return 0;
    } else if (n < 3) {
        return 1;
    } else {
        for (int i = 0; i <= n - 3; ++i) {
            tmp = num1 + num2;
            num1 = num2;
            num2 = tmp;
        }
        return tmp;
    }
}
int main(){
    int n = 0;
    while (1) {
        printf("请输入要求的斐波那契数:"); 
        scanf("%d", &n);
        printf("%d\n", fib(n));
    }
    
    return 0; 
}

用递归就行
public int Fibonacci(int n) {
if(n == 0) {
return 0;
}
if(n == 1) {
return 1;
}
return Fibonacci(n-1) + Fibonacci(n-2);
}

你没有写main发方法,肯定运行不了,c语言中 main方法是程序的执行入口。

没有写主函数

你看看是不是没有定义当n等于0时输出0

你只写了递归函数部分,你需要写个主函数,然后调用函数输出结果,头文件也不能忘

//直接输出
#include <iostream>
using namespace std;
int main()
{
    long long a[56];
    //int a[46];
    int i;
    a[0]=1;
    a[1]=1;
    for(i=2;i<56;i++)
    {
        a[i]=a[i-1]+a[i-2];
    }
    for(i=0;i<56;i++)
    {
        cout<<a[i]<<' ';
    }
    cout<<endl;
    return 0;
}
//输入n,输出第n项
#include <iostream>
using namespace std;
int main()
{
    long long a[56];
    //int a[46];
    int i,n;
    cin>>n;
    a[0]=1;
    a[1]=1;
    for(i=2;i<56;i++)
    {
        a[i]=a[i-1]+a[i-2];
    }
    cout<<a[n-1]<<endl;
    return 0;
}

如有帮助,求采纳

你这个不对