演算法一:斐波那契阿數列

xiaohuya_1998發表於2018-03-02

斐波納切數列

# include <stdio.h>
/**
遞迴函式必須傳引數
n:輸入的引數
*/
int fib1(int n)
{
	if(n==1||n==2){
		return 1;
	}
	return fib1(n-1)+fib1(n-2);
}
/**
非遞迴求法
n:輸入的引數
  */
int fib2(int n){
	int i,one=1,two=1,cur;
	if(n<3){
		return 1;
	}
	for(i=2;i<n;i++){
		cur=one+two;
		one=two;
		two=cur;
	}
	return cur;
}
/**
date=20180302
auther=xiaohuyaxixixi
purpose:斐波納切數列
*/
int main(){

	/**int n,len=0,i;
	int a[100];
	scanf("%d",&n);
	while(n!=0){
		a[len]=fib1(n);
		len++;
		scanf("%d",&n);
	}
	for(i=0;i<len;i++){
		printf("\n%d\n",a[i]);
	}*/
	int n;
	scanf("%d",&n);
	printf("%d\n",fib2(n));
	
	return 0;
}

相關文章