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项之和:
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);
#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项和的主要内容,如果未能解决你的问题,请参考以下文章