关于#Fibonacci#的问题,如何解决?(语言-c语言)

Fibonacci数列的组成规律为:0 1 1 2 3 5 8 13 21 编写程序,求Fibonacci数列第1项的值(0<is 40)。

#include <stdio.h>

int fibonacci(int n) {
    if (n == 0) return 0;
    if (n == 1) return 1;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    int i;
    printf("请输入i的值(0<i<40):");
    scanf("%d", &i);
    printf("第%d项的值为:%d\n", i, fibonacci(i));
    return 0;
}

#include <stdio.h>
int main()
{
    int a1 = 0,a2= 1,an,n;
    scanf("%d",&n);
    if(n==1)
        printf("0");
    else if(n==2)
        printf("1");
    else
    {
         for(int i=3;i<=n)
         {
             an = a1 + a2;
             a1 = a2;
             a2 = an;
         }
         printf("%d",an);
    }
}

#include <stdio.h>

int main() {
    int n = 1; 
    scanf("%d",&n); 
    int a = 0, b = 1, c;  
    for (int i = 2; i <= n; i++) {
        c = a + b; 
        a = b;  
        b = c;
    }
    printf("Fibonacci数列第%d项的值为:%d\n", n, a);
    return 0;
}

  • 你可以看下这个问题的回答https://ask.csdn.net/questions/1118440
  • 你也可以参考下这篇文章:C语言 编写程序:请将Fibonacci数列前30项中的偶数值找出来,存储到一维数组中。其中,Fibonacci数列如下:1,1,2,3,5,8,13,21,34...该数列除前两项之外,其他任意
  • 除此之外, 这篇博客: C语言简单程序2中的 8. Fibonacci数列 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 编程求Fibonacci数列的前40项,该数列的生成方法为f(1)=1,f(2)=1,f(n)=f(n-1)+f(n-2)(n>2)。

    #include<stdio.h>
    void main(){
    	int f1,f2,f3,n,i;f1=1;f2=1;
    	printf("%d\t%d\t",f1,f2);
    	n=2;
    	for(i=3;i<=40;i++)
    	{
    		f3=f1+f2;
            printf("%d\t",f3);
    		n++;
    		if(n%5==0)
    			printf("\n");
    		f1=f2;
    		f2=f3;
    	}
    }
    
  • 以下回答由chatgpt基于相关博客总结生成:

    参考答案:

    #include <stdio.h>
    
    int main()
    {
        int f1 = 0;
        int f2 = 1;
        int n = 40; // 求斐波那契数列第n项,范围0-40
        int result;
        if (n == 0) // n=0时单独处理
        {
            result = f1;
        }
        else if (n == 1) // n=1时单独处理
        {
            result = f2;
        }
        else // 使用循环计算斐波那契数列第n项
        {
            for (int i = 2; i <= n; i++)
            {
                result = f1 + f2; // 计算下一项
                f1 = f2; // 更新f1和f2的值,以便计算下一项
                f2 = result;
            }
        }
        printf("斐波那契数列第%d项的值为:%d\n", n, result);
        return 0;
    }
    

    解释:

    0、1是斐波那契数列的前两项,从第三项起,每一项均等于前两项之和。因此,我们从第2项开始用循环计算第n项的值。

    1. 程序先定义了f1和f2两个变量,分别初始化为0和1,用来计算第n项的值。

    2. 然后程序根据n的值进行分类讨论:

    3. 如果n为0,那么直接输出f1即可。

    4. 如果n为1,那么直接输出f2即可。
    5. 如果n大于1,则进入else分支,通过for循环计算斐波那契数列第n项的值。循环变量i从2开始遍历,每次计算下一项的值并更新f1和f2的值,以便计算下一项的值。

    6. 最后使用printf输出结果。

    输出结果:

    斐波那契数列第20项的值为6765