目录
第一章p11 的思维扩展题
递归
#include<stdio.h>
int Fbnq(int n){
if(n==1 || n==0){ //判断n=0或者n=1的情况
return 1;
}else{
return Fbnq(n-1)+Fbnq(n-2); //根据斐波那契公式进行调用
}
}
int main(){
int n;
scanf("%d",&n); //输入自己想要求得第几项
int result;
result=Fbnq(n);
printf("%d",result);
return 0;
}
时间复杂度
O(n^2)
非递归
#include<stdio.h>
int main(){
int n;
int result;
scanf("%d",&n); //输入自己想要求得第几项
if(n==0 || n==1){ //判断n=0或者n=1的情况
return printf("1");
}else{ //非递归主要是通过n-2次循环,来模拟本项和等于前两项和(从第三项开始),通过swap
int a=1; //来交换前两项和来实现
int b=1;
int tmp=0;
for(int i = 3;i<=n;i++){
tmp=b;
b=a+b;
a=tmp;
}
result = a+b;
return printf("%d",result);
}
}
时间复杂度:
O(n)