斐波那契数列实现的三种方法

本文介绍使用C语言实现斐波那契数列的三种方法:数组、递归及递推,并提供了详细的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用。

那么如何用c语言实现斐波那契数列呢?这里有三种方法,分别为数组,递归,递推。代码如下:

数组:

#include <stdio.h>
#include <stdlib.h>
#include<time.h>
int main()
{
    int i,f[100000]= {1,1},n;
    while(scanf("%d",&n)!=EOF)
    {
        clock_t start,end;
        start=clock();
        for(i=2; i<n; i++)
            f[i]=f[i-1]+f[i-2];
        for(i=0; i<n; i++)
        {
            if(i%5==0)
                printf("\n");
            printf("%d ",f[i]);
        }
        end=clock();
        printf("运行时间为:%f ms",difftime(end,start));
        printf("\n");
    }
    return 0;
}

程序运行如下:



递归:

#include <stdio.h>
#include<time.h>
int Fibnacci(int n)
{
    if(n == 0 )
        return 0;
    if(n == 1)
        return 1;
    else
        return Fibnacci(n-1) + Fibnacci(n-2);
}
int main()
{
    int n,i;
    clock_t start,end;
    while(scanf("%d",&n)!=EOF)
    {
        start=clock();
        for(i = 1; i <= n; i++)
            printf("%d ",Fibnacci(i));
        if(i%5==0)
            printf("\n");
        printf("\n");
        end=clock();
        printf("运行时间为:%f ms\n",difftime(end,start));
    }
    return 0;
}

程序运行如下:



递推:

#include<stdio.h>
#include<time.h>
long Fibonacci(long n)
{
    long f1,f2=1,f3=1,i;
    if((n==1)||(n==2))
        return f2;
    else
    {
        for (i=3; i<=n; i++)
        {
            f1=f2+f3;
            f2=f3;
            f3=f1;
        }
    }
    return f1;
}


int main()
{
    int n,i;
    while(scanf("%d",&n)!=EOF)
    {
        clock_t start,end;
        start=clock();
        for(i=1; i<=n; i++)
        {
            printf("%ld ",Fibonacci(i));
            if(i%5==0)
                printf("\n");
        }
        end=clock();
        printf("运行时间为:%f ms",difftime(end,start));
        printf("\n");
    }
    return 0;
}

程序运行如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值