当前位置:   article > 正文

斐波那契数列——C语言_斐波那契数列c语言

斐波那契数列c语言

目录

一、递归法

二、for循环

三、for循环+数组

斐波那契数列(Fibonacci sequence),也称之为黄金分割数列,由意大利数学家列昂纳多・斐波那契(Leonardo Fibonacci)提出。斐波那契数列指的是这样的一个数列:1、1、2、3、5、8、13、21、34、……,这个数列从第 3 项开始,每一项都等于前面两项之和。在数学上,斐波那契数列可以被递推的方法定义如下:

F(1)=1

F(2)=1 *

... ...

F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)

斐波那契数列是数学上面一个经典的例子,并且在日常生活中有很多应用,他还与黄金分割有着密不可分的联系,而且当 n 趋向于无穷大时,前一项与后一项的比值越来越逼近黄金分割值 0.618。

一、递归法

输出斐波那契数列的第n项

  1. #include<stdio.h>
  2. int Fibon(int n)  //递归函数
  3. {
  4.   if (n == 1|| n == 2)
  5.   return 1;
  6.   else
  7.   return Fibon(n-1)+ Fibon(n-2);
  8. }
  9. int main()
  10. {
  11. int n,res=0;
  12. scanf("%d",&n);
  13. for (int i = 1; i <= n; i++)
  14. {
  15. res = Fibon(i);
  16. // printf("%d ",res);
  17. }
  18. printf("\n第%d项斐波那契数列的值为:%d",n,res);
  19. return 0;
  20. }

运行结果:

二、for循环

  1. #include<stdio.h>
  2. int main()
  3. {
  4. int f1 = 1; //第一项
  5. int f2 = 1;  //第二项
  6. int f3 = 1;   //如果n=3 才会进入for循环计算,否则都输出1 就不用再分别考虑前面两个数的输出问题
  7. int n;
  8.    scanf("%d",&n);
  9. for (int i = 2; i < n; i++)
  10. {
  11. f3 = f1 + f2;
  12. f1 = f2;
  13. f2 = f3;
  14. // printf("%d ", f3);
  15. }
  16. printf("\n第%d项斐波那契数列的值为:%d",n,f3);
  17. return 0;
  18. }

三、for循环+数组

  1. #include<stdio.h>
  2. int main()
  3. {
  4.    int a[1005],n;
  5.    scanf("%d",&n);
  6.    
  7.    a[1]=1,a[2]=1,a[3]=2;
  8.    
  9.    for(int i=3;i<=n;i++)
  10.   {
  11.        a[i]=a[i-1]+a[i-2];
  12. //       printf("%d\n",a[i]);
  13.   }
  14.    printf("第%d项斐波那契数列的值为:%d",n,a[n]);
  15.    return 0;
  16. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/434064
推荐阅读
相关标签
  

闽ICP备14008679号