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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; 

参考技术A

#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;

本回答被提问者和网友采纳
参考技术B #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);

我想用递归写斐波那契数列,c语言

#include <stdio.h>
int s(int m);
int main (void)

int n, i = 0;
int x;
scanf ("%d", &n);
while (i < n)

scanf ("%d", x);
printf ("%d", s(x));

return 0;

int s(int m)

int f1 = 1;
int f2 = 1;
if (m = 1)
return 1;
else

return (f1 + f2);
f1 = f1 + f2;
f2 = f1 + f2;
m--;


哪里错了

代码:

#include&lt;stdio.h&gt;

int Fib(int n)//自定义函数

if(n&lt;0)

return-1;

else if(n==0)

return 0;

else if(n==1)

return 1;

else

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

int main()

int num;

printf("请输入要求取的第n项斐波那契数列n=");

if(scanf("%d",&num))

if(num&gt;=0)

printf("%d",Fib(num));

else

printf("Error!!!");

return 0;

return 0;

扩展资料:

斐波那契数列排列组合

有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法

这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……

1,2,3,5,8,13……所以,登上十级,有89种走法。

类似的,一枚均匀的硬币掷10次,问不连续出现正面的可能情形有多少种?

答案是(1/√5)*[(1+√5)/2]^(10+2)-[(1-√5)/2]^(10+2)=144种。

求递推数列a⑴=1,a(n+1)=1+1/a(n)的通项公式

由数学归纳法可以得到:a(n)=F(n+1)/F(n),将斐波那契数列的通项式代入,化简就得结果。

参考资料:

百度百科——斐波那契数列

参考技术A

没怎么看懂你的递归,我给你写了一个,你参考参考

#include <stdio.h>

int fun(int n)

    if(n==1 || n==2)
    return 1;
    else
    return fun(n-1) + fun(n-2);


int main(void)

    int n,i=0;
    printf("请输入要输出数列的前多少项:");
    scanf("%d",&n);
    if(n>=1)
    for(i=0;i<n;i++)
    printf("Fibonacci数列的第%3d项是:%d\\n",i+1,fun(i+1));
    else
    printf("输入错误!请重新输入......\\n");
    
    return 0;

本回答被提问者采纳
参考技术B 没怎么看懂你的递归,我给你写了一个,你参考参考
#include
<stdio.h>
int
fun(int
n)

if(n==1
||
n==2)
return
1;
else
return
fun(n-1)
+
fun(n-2);

int
main(void)

int
n,i=0;
printf("请输入要输出数列的前多少项:");
scanf("%d",&n);
if(n>=1)
for(i=0;i<n;i++)
printf("fibonacci数列的第%3d项是:%d\n",i+1,fun(i+1));
else
printf("输入错误!请重新输入......\n");
return
0;
参考技术C 执行完 return ,return 后面的语句就不执行了。
其实可以这么写嘛
int fib(int n)

if(n<=2)
return 1 ;
else
return fib(n-1) + fib(n-2) ;

我只是大概写一下 , 细节自己把握一下吧
参考技术D scanf ("%d", x);
没&号

以上是关于c语言,编程实现,求斐波那契数列,1,1,2,3,5,8,......的前20项及前20项和的主要内容,如果未能解决你的问题,请参考以下文章

c语言中,。编写程序求斐波那契数列的第n项和前n项之和。大家看好是【第】n项的值和前n项的合= =。

递归求斐波那契数列

如何用递归解决斐波那契数列

c语言数组编程,斐波那契数列的第1,2项均为1,其后各项为前两项之和,输出前10项,每5项换一行

C语言 用调用函数和数组求斐波那契数列的前10项。 f[i]=F(f,i); 能这样用吗

我想用递归写斐波那契数列,c语言