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

如题所述

C语言源程序如下:

#include<stdio.h>

int main()

{

int array[100]={1,1};//斐波那契数列前两个元素均为0

int i=0;//循环变量

int n=20;//数列需要求的个数

int sum = 0;//和变量

for(i=2;i<n+1;i++)//按递推原理依次求出后续元素

{

array[i]=array[i-1]+array[i-2];//数列原理

}

printf("arr[1]-arr[%d] = ", n);//提示输出数列元素

for (i = 0; i < n; i++)//遍历数列

{

printf("%d ",array[i]);//输出arr[1]-arr[n]元素内容

sum += array[i];//顺便进行求和

}

printf("\n%d ", sum);//输出求和结果

return 0;

}

程序运行结果如下:


扩展资料:

利用递归原理进行求斐波那契数列的求解和求前n项和:

#include<stdio.h>

int fibonacci(int n) //递归函数


if (n == 0 || n == 1)  

return 1;    

if (n > 1)        

return fibonacci(n - 1) + fibonacci(n - 2); 


int main() 


int i = 0;    

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


printf("fibonacci(%d) = %d\n", i, fibonacci(i)); 

}    

return 0; 

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-04-14

#include<stdio.h>

int main()

{int a[20],n,i,s=2;

 a[0]=a[1]=1;

 printf("1 1 ");

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

 {a[i]=a[i-1]+a[i-2];

  s+=a[i];

  printf("%d ",a[i]);

 }

 printf("\nsum=%d\n",s);

 return 0;

}

本回答被提问者和网友采纳
第2个回答  2016-04-14
#include<stdio.h>
int fib(int n);
int main(void)
{
    int sum=0;
    for(int i=1;i<=20;i++)
    {
        if(i%11==0)
            printf("\n");
        printf("%5d",fib(i));
        sum+=fib(i);
    }
    printf("\n前20项之和为:%d\n",sum);
}
int fib(int n)
{
    if(n<3)
    return 1;
    else
    return fib(n-1)+fib(n-2);
}

相似回答