当前位置:   article > 正文

C语言——斐波那契数列

C语言——斐波那契数列

本文针对斐波那契数列提出三个问题:分别是

1、迭代方法求前n个斐波那契数列 

2、递归方法求第n个斐波那契数值 

3、迭代方法求第n个斐波那契数值

目录

1、迭代方法求前n个斐波那契数列

2、递归方法求第n个斐波那契数值 

3、迭代方法求第n个斐波那契数值


1、迭代方法求前n个斐波那契数列

  1. #include <stdio.h>
  2. #include<malloc.h>
  3. int* fbnq_array01(int a){
  4. int n=a;
  5. int* arr=(int*)malloc(sizeof(int)*n);
  6. if(a<=2){
  7. while(n>0){
  8. arr[n-1]=1;
  9. n--;
  10. }
  11. return arr;
  12. }else{
  13. int b=1,c=1,d,i;
  14. arr[0]=1;
  15. arr[1]=1;
  16. for(i=0;i<a;i++){
  17. if(i<=1){
  18. arr[i]=1;
  19. }else{
  20. d=b+c;
  21. b=c;
  22. c=d;
  23. arr[i]=c;
  24. }
  25. }
  26. return arr;
  27. }
  28. }
  29. int main(){
  30. int input,flag=0;
  31. int *p;
  32. printf("需要打印前几位斐波那契数列:\n");
  33. scanf("%d",&input);
  34. p=fbnq_array01(input);
  35. while(flag<input){
  36. printf("%d ",*(p+flag));
  37. flag++;
  38. }
  39. printf("\n");
  40. return 0;
  41. }

效果如下图所示:

2、递归方法求第n个斐波那契数值 

  1. #include <stdio.h>
  2. #include<malloc.h>
  3. int fbnq_array02(int a){
  4. if(a<=2){
  5. return 1;
  6. }else{
  7. return fbnq_array02(a-1)+fbnq_array02(a-2);
  8. }
  9. }
  10. int main(){
  11. int input;
  12. printf("需要打印第几位斐波那契数值:\n");
  13. scanf("%d",&input);
  14. printf("%d\n",fbnq_array02(input));
  15. return 0;
  16. }

效果如下图所示:

3、迭代方法求第n个斐波那契数值

  1. #include <stdio.h>
  2. #include<malloc.h>
  3. int fbnq_array03(int a){
  4. int b=1,c=1,d;
  5. if(a<=2){
  6. return 1;
  7. }else{
  8. while(a>2){
  9. d=b+c;
  10. b=c;
  11. c=d;
  12. a--;
  13. }
  14. }
  15. return d;
  16. }
  17. int main(){
  18. int input;
  19. printf("需要打印第几位斐波那契数值:\n");
  20. scanf("%d",&input);
  21. printf("%d\n",fbnq_array03(input));
  22. return 0;
  23. }

效果如下图所示:

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

闽ICP备14008679号