赞
踩
本文针对斐波那契数列提出三个问题:分别是
1、迭代方法求前n个斐波那契数列
2、递归方法求第n个斐波那契数值
3、迭代方法求第n个斐波那契数值
目录
- #include <stdio.h>
- #include<malloc.h>
-
- int* fbnq_array01(int a){
- int n=a;
- int* arr=(int*)malloc(sizeof(int)*n);
- if(a<=2){
- while(n>0){
- arr[n-1]=1;
- n--;
- }
- return arr;
- }else{
- int b=1,c=1,d,i;
- arr[0]=1;
- arr[1]=1;
- for(i=0;i<a;i++){
- if(i<=1){
- arr[i]=1;
- }else{
- d=b+c;
- b=c;
- c=d;
- arr[i]=c;
- }
- }
- return arr;
- }
- }
-
- int main(){
- int input,flag=0;
- int *p;
- printf("需要打印前几位斐波那契数列:\n");
- scanf("%d",&input);
- p=fbnq_array01(input);
- while(flag<input){
- printf("%d ",*(p+flag));
- flag++;
- }
- printf("\n");
- return 0;
- }

效果如下图所示:
- #include <stdio.h>
- #include<malloc.h>
-
- int fbnq_array02(int a){
- if(a<=2){
- return 1;
- }else{
- return fbnq_array02(a-1)+fbnq_array02(a-2);
- }
- }
-
- int main(){
- int input;
- printf("需要打印第几位斐波那契数值:\n");
- scanf("%d",&input);
- printf("%d\n",fbnq_array02(input));
- return 0;
- }

效果如下图所示:
- #include <stdio.h>
- #include<malloc.h>
-
- int fbnq_array03(int a){
- int b=1,c=1,d;
- if(a<=2){
- return 1;
- }else{
- while(a>2){
- d=b+c;
- b=c;
- c=d;
- a--;
- }
- }
- return d;
-
- }
-
- int main(){
- int input;
- printf("需要打印第几位斐波那契数值:\n");
- scanf("%d",&input);
- printf("%d\n",fbnq_array03(input));
- return 0;
- }

效果如下图所示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。