C语言如何用数组求Fibonacci数列的前N项和

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何用数组求Fibonacci数列的前N项和相关的知识,希望对你有一定的参考价值。

Fibonacci数列就是后一项是前两项之和 1 1 2 3 5 8 13 21......依次类推。要求求前N项和,N从1开始。自己写的一直不对。求大神帮下忙。

1、首先打开vc,点击文件、新建;

2、选择win32 console application 并在右侧输入工程的名字和地址,确定;

3、选择一个空的工程,完成。

4、再次点击文件、新建,

5、选择c++ source file 并输入文件名字,确定,

6、输入如图所示的代码,这里以前十个斐波那契数列数为例,需要输出其他个数请把5改成对应数字的一半(比如要输出前20个,就把图中的5改成10);

7、点击右上角的编译运行按钮。

8、成功地输出了斐波那契数列的前十项,如图。

参考技术A

#include<stdio.h>

int main()

int i,f[21]=1,1;//对最前面两个元素f[0]和f[1]赋初值1

for(i=2;i<21;i++)

f<i>=f[i-2]+f[i-1];//先后求出f[2]~f[20]的值

for(i=0;i<21;i++)

if(i%5==0)//控制每输出5个数后换行

printf("\\n");

printf("%d\\t",f<i>);//输出一个数

printf("\\n");

return 0;

扩展资料:

printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。

其中格式化字符串包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以"%"开始,后跟一个或几个规定字符,用来确定输出内容格式。

参量表是需要输出的一系列参数,其个数必须与格式化字符串所说明的输出参数个数一样多,各参数之间用","分开,且顺序一一对应,否则将会出现意想不到的错误。

比如:

int a=1234;

printf("a=%d\\n",a);

输出结果为a=1234。

scanf()是C语言中的一个输入函数。与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include<stdio.h>。

int scanf(const char*restrict format,...);

函数scanf()是从标准输入流stdin(标准输入设备,一般指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

如:

scanf("%d%d",&a,&b);

函数返回值为int型,如果a和b都被成功读入,那么scanf的返回值就是2。

参考技术B 斐波那契数列是个很经典的数列了,这个数列可以用两种方法实现,递归实现和循环实现,下面分别用递归和循环实现一次吧,希望对你有帮助。
递归:
Long Fibonacci( unsigned int n)

if(n<=0)
return 0;
if(n==1)
return 1;
return Fibonacci(n-1)+Fibonacci(n-2);

递归实现非常简单,代码也简单明了,但是递归有个致命的弱点,里面计算很多是重复的,当n很大的时候,计算量会变得非常大,效率非常低.
循环:
long Fibonacci( unsigned int n)

if(n<=0)
return 0;
if(n==1)
return 1;
long one=1;
long two=0;
long fadd=0;
for( int i=0;i<=n;i++)

fadd=one+two;
two=one;
one=fadd;

return fadd;

此种方法是首先根据f0,f1计算出f2,然后由f1,f2,计算出f3,依次类推,时间复杂度O(N),效率就改善了很多。推荐此种方法。
希望对你有帮助!!!
参考技术C

    什么是Fibonacci数列。
    Fibonacci数列列出的前几项:1,1,2,3,5,8,13,21,3前两项之和等于第三项,这个也就是大家说的黄金分割。
    递推式:
    F1 = 1               (n = 1)
    F2 = 1               (n = 2)
    Fn = Fn-1 + Fn-2     (n ≥2)

    用C语言完成的求前N项之和:

    #include<stdio.h>
    void main()
     long sum=0;
     long a[100];
     int i,n;
     scanf("%d",&n);    //输入N
     a[0]=a[1]=1;
     sum=2;
     for(i=2;i<n;i++) 
       a[i]=a[i-1]+a[i-2];    //求第N项
       sum=sum+a[i];    //累加求和
     
     printf("%ld",sum);

参考技术D #include<stdio.h>
#include<stdlib.h>
#define N 200
long int F[N];
void Fi(int n);
long int Sum(int n);
void main()

int n;
long int sum;
printf("你想求多少项的和?请输入:");
scanf("%d",&n);
if(n<=0)

printf("输入应大于0!\n");
system("pause");
return;

Fi(n);
sum=Sum(n);
printf("Fibonacc数列前%d项和为:%ld\n",n,sum);
system("pause");


void Fi(int n)

int i=n;
F[0]=F[1]=1;
if(n>2)
for(i=2;i<n;i++)

F[i]=F[i-1]+F[i-2];

printf("Fibonacc数列前%d项为:\n",n);
for(i=0;i<n;i++)
printf("%d ",F[i]);
printf("\n");


long int Sum(int n)

int i;long int sum=1;
if(n>=2)
sum=2;
if(n>=3)
for(i=2;i<n;i++)

sum=sum+F[i];

return sum;

我在VC上运行过,正确。本回答被提问者采纳

如何用C语言输出斐波那契数列的前n项

参考技术A #include<stdio.h>
main()
int a=1,b=1,c,s=1;
do
c=a+b;
printf("%d,",a);
a=b;
b=c;
s++;

while(s<=10);
本回答被提问者采纳

以上是关于C语言如何用数组求Fibonacci数列的前N项和的主要内容,如果未能解决你的问题,请参考以下文章

c语言.计算斐波那契数列的前n项和(s),四种方法?

,c语言:利用数组求斐波那契数列的前20项

C 语言实例 -求分数数列1/2+2/3+3/5+5/8+...的前n项和

求数列1,1,2,3,5……前20项的和,用C语言编写

求自然数列中前n 个数的和。

c语言,编程实现,求斐波那契数列,1,1,2,3,5,8,......的前20项及前20项和