当前位置:   article > 正文

【C语言】斐波那契数列细讲_编程斐波那契数列(fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波

编程斐波那契数列(fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波

什么是斐波那契数列?

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契斐波那契斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称“兔子数列”,其数值为:1、1、2、3、5、8、13、21、34……在数学上


一.细讲数列:

画的不好,大家凑合着看.大致的意思就是:前两位的和等于第3位


二.细讲运算方法:

递归计算:

  1. int fbnq(int n)
  2. {
  3. if (n <= 2)        
  4. return 1;
  5.    else
  6.     return fbnq(n - 1) + fbnq(n - 2);
  7. }
  8. int main()
  9. {
  10. int n=0;
  11. int c=0;
  12. printf("输入数");
  13. scanf("%d",&n);
  14. c=fbnq(n);
  15. printf("%d",c);
  16. return 0;
  17. }

 但是递归在计算时,有一个致命的缺陷就是,数字大的时候需要非常大的工作量,会导致计算时间非常 的长,且都是重复的步骤。

迭代计算:

这个时候我们想到递归和迭代的区别,我在递归和迭代详解中详细的讲述了两者区别,当一个问题相当复杂,难以用递归实现时,此时迭代实现的简洁性便可以补偿它所带来的运行时开销

  1. int fbnq(int n)
  2. {
  3. int a, b, c;
  4. a = 1;
  5. b = 1;
  6. c = 0;
  7. if (n <= 2)
  8. {
  9. return 1;
  10. }
  11. while (n > 2)
  12. {
  13. n--;
  14. c = a + b;
  15. a = b;
  16. b = c;
  17. }
  18. return c;
  19. }
  20. int main()
  21. {
  22. int n = 0;
  23. int c = 0;
  24. printf(":");
  25. scanf("%d", &n);
  26. c = fbnq(n);
  27. printf("%d", c);
  28. return 0;
  29. }

三.分析:

两者的区别:

1.选择算法的时候想要代码简洁可以考虑递归,但是也要考虑到此算法的弊端。

2.迭代虽然代码多,但是其算法较快比较适合算一下高计算量的题目。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号