本文针对斐波那契数列提出三个问题:分别是
1、迭代方法求前n个斐波那契数列
2、递归方法求第n个斐波那契数值
3、迭代方法求第n个斐波那契数值
目录
1、迭代方法求前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;
}
效果如下图所示:
2、递归方法求第n个斐波那契数值
#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;
}
效果如下图所示:
3、迭代方法求第n个斐波那契数值
#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;
}
效果如下图所示: