#2019120700019-LG 斐波那契数列

P1962 P3986等基础模板

1 递归(自调用)

//加入优化 
#include <iostream>
#include <cstring>
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
int fib[5005];
int f(int g){
	if(g==1||g==2) return 1;
	if(fib[g]!=-1) return fib[g];
	fib[g]=f(g-1)+f(g-2);
	return fib[g];
} 
int main( ){
	//memset(fib,-1,sizeof(fib));
	for(int i=1;i<=5005;i++) fib[i]=-1; 
	int a;
	int n;
	scanf("%d",&n);
	while(n--){
		scanf("%d",&a);
		printf("%d\n",f(a));	
	}
	return 0;
} 

2 递推 (先读入后递归)

#include<cstdio>
#include <cstring>
using namespace std;
int main( ){
	int f[1000005];
	int n;
	scanf("%d",&n);
	while(n--){
		memset(f,0,sizeof(f));
		f[1]=1,f[2]=1;
		int a=0;
		scanf("%d",&a);
			for(int i=3;i<=a;i++){
			f[i]=f[i-1]%1000+f[i-2]%1000;
		}
		printf("%d\n",f[a]%1000);
	}
	return 0;
} 

3 递推(先递归后读入)

#include<cstdio>
#include <cstring>
using namespace std;
	int f[1000005];//写在这里就能正常运行 
int main( ){
//int f[1000005] 如果写在main里面,那么会爆 
	int n;
	scanf("%d",&n);
	memset(f,0,sizeof(f));
	f[1]=1,f[2]=1;
		for(int i=3;i<=1000005;i++){
		f[i]=f[i-1]%1000+f[i-2]%1000;
}
	while(n--){
		int a=0;
		scanf("%d",&a);
		printf("%d\n",f[a]%1000);
	}
	return 0;
} 
posted @ 2019-12-07 07:55  刘子闻  阅读(142)  评论(0编辑  收藏  举报