有关斐波那契数列的常见问题

核心思想:

法1:f3 = f1+f2;f1 = f2;f2 = f3;

法2:f[i] = f[i-2]+f[i-1];

代码实现:

//求前20项斐波那契数列(法1)
/*
#include<cstdio>
int main(){
    int i,f1,f2,f3;
    f1 = 1;
    f2 = 1;
    printf("%10d%10d",f1,f2);
    for(i=3;i<=20;i++){
        f3 = f1+f2;
        printf("%10d",f3);
        if(i%4==0)
            printf("\n");
        f1 = f2;
        f2 = f3;
    }
}
*/
//求前n项斐波那契数列
/*
#include<cstdio>
int main(){
    int i,n,f1,f2,f3;
    f1 = 1;
    f2 = 1;
    printf("请输入要求斐波那契数列的项数:\n");
    scanf("%d",&n);
    printf("%10d%10d",f1,f2);
    for(i=3;i<=n;i++){
        f3 = f1+f2;
        printf("%10d",f3);
        if(i%4==0)
            printf("\n");
        f1 = f2;
        f2 = f3;
    }
    return 0;
}
*/
//求前20项斐波那契数列,用数组实现(法2)
/*
#include<cstdio>
int main(){
    int i;
    int f[20]={1,1};
    printf("%10d%10d",f[0],f[1]);
    for(i=2;i<20;i++){
        f[i] = f[i-2]+f[i-1];
        printf("%10d",f[i]);
        if((i+1)%4==0)
            printf("\n");
    }
}
*/    
//求前20项斐波那契数列,输入m,并求与m最接近的值。
/*
#include<cstdio>
#include<stdlib.h>
#include<math.h>
int main(){
    int i;
    int f[20]={1,1};
    printf("%10d%10d",f[0],f[1]);
    for(i=2;i<20;i++){
        f[i] = f[i-2]+f[i-1];
        printf("%10d",f[i]);
        if((i+1)%4==0)
            printf("\n");
    }
    int min,t,j,m;
    printf("请输入m:\n");
    scanf("%d",&m);
    min = abs(m-f[0]);
    for(i=1;i<20;i++){
        t = abs(m-f[i]);
        if(t<min){
            min = t;
            j = i;
        }
    }
    printf("M=%d,f[i]=%d",m,f[j]);
    return 0;
}
*/

运行结果:


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值