机试7---斐波那契数列

  • 不断变换初始:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
using namespace std;

int main(){
	int f,f1=1,f2=1,n;
	cin>>n;
	if(n==1||n==2)
		f=1;
	else{
		for(int i=3;i<=n;i++){
			f=f1+f2;
			f1=f2;
			f2=f;
		}
    }
	printf("%d\n",f);
	system("pause");
    return 0;
}
  • 递推法:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int f[50];
int main(){
	int i,n;
	cin>>n;
	f[1]=f[2]=1;
	for(i=3;i<=n;i++)
		f[i]=f[i-1]+f[i-2];
	printf("%d\n",f[n]);
	system("pause");
    return 0;
}
  • 递归法:
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
using namespace std;
int fib(int);
int main(){
	int i,n;
	cin>>n;
	printf("%d\n",fib(n));
	system("pause");
    return 0;
}
int fib(int n){
	if(n==1||n==2)
		return 1;
	else
		return fib(n-1)+fib(n-2);
}
上一篇:如何高效的处理数组映射


下一篇:阿里云学生服务器搭建网站-----阿里云学生服务器购买