-Cpy。 2019-11-09 18:13 采纳率: 100%
浏览 3726
已采纳

求解答!C语言-斐波那契数列前n项和问题

斐波那契数列前n项和问题

如果数列的前前两项不为1,而是a1和a2,那应该怎么设计这个函数呢?

#include"stdio.h"
int fb(int a1,int a2,int n); 
int main()
{
    int a,b,n,s;
    scanf("%d%d%d",&a,&b,&n);
    s=fb(a,b,n);
    printf("%d\n",s);
}
int fb(int a1,int a2,int n);
{

}

  • 写回答

2条回答 默认 最新

  • little_fat_sheep Unity3D领域新星创作者 2019-11-09 19:12
    关注

    非递归实现:

    int fb(int a1,int a2,int n);
    {
        int a[10000],s,i;
        a[0]=a1;
        a[1]=a2;
        s=a[0]+a[1];
        for(i=2;i<n;i++){
            a[i]=a[i-1]+a[i-2];
            s+=a[i];
        }
        return s;
    }
    

    递归实现:

    #include"stdio.h"
    int fb(int a1,int a2,int s,int n); 
    int main()
    {
        int a,b,n,s;
        scanf("%d%d%d",&a,&b,&n);
        s=fb(a,b,a+b,n);
        printf("%d\n",s);
    }
    
    int fb(int a1,int a2,int s,int n){
        int t=a1+a2;
        if(n==2) return s;
        s=t+fb(a2,t,s,n-1);
        return s;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 墨色染夕 若水三千 2022-01-08 09:36
    关注

    #include<stdio.h>
    int fb(int a1, int a2, int n)
    {
    //常规方法
    int num = 0;
    if (n > 2)
    {
    int i = 0;
    for (i = 0; i < n - 2; i++)
    {
    num = a1 + a2;
    a1 = a2;
    a2 = num;

        }
        return num;
    }
    else if (n == 1)
        return a1;
    else if (n == 2) return a2;
    else
        return 0;
    ////递归方法(不建议使用)
    //if (n > 2)
    //{
    //    return fb(a1, a2, n - 1)+fb(a1,a2,n-2);
    //}
    //else if (n == 1)
    //    return a1;
    //else if (n == 2) return a2;
    //else
    //    return 0;
    

    }
    int main()
    {
    int ret = 0;
    do
    {
    int a1 = 0; int a2 = 0; int n = 0;
    printf("请输入前两位与n的值:");
    scanf("%d%d%d", &a1, &a2, &n);
    ret = fb(a1, a2, n);
    } while (!ret);
    printf("第n项为:%d\n", ret);
    return 0;
    }

    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 我需要在PC端 开两个抖店工作台客户端.(语言-java)
  • ¥15 有没有哪位厉害的人可以用C#可视化呀
  • ¥15 可以帮我看看代码哪里错了吗
  • ¥15 设计一个成绩管理系统
  • ¥15 PCL注册的选点等函数如何取消注册
  • ¥15 问一下各位,为什么我用蓝牙直接发送模拟输入的数据,接收端显示乱码呢,米思齐软件上usb串口显示正常的字符串呢?
  • ¥15 Python爬虫程序
  • ¥15 crypto 这种的应该怎么找flag?
  • ¥15 代码已写好,求帮我指出错误,有偿!
  • ¥15 matlab+波形匹配算法