首页 > 试题广场 >

写出函数 int fib ( int n ) 的简洁高效实现

[问答题]

写出函数 int fib ( int n )  的简洁高效实现,用于计算斐波那契数。

int fib(int n){
	int i=0,p=1,q=1,s=0;
	if(n<=2) {
		return 1;
	} else {
		for(i=3;i<=n;i++){
			s = p + q;
			p = q;
			q = s;				
		}	
		return s;
	}
}

发表于 2017-01-27 03:41:36 回复(0)
斐波那契数列是前两个元素为1,1后面的元素是前两项之和。如1,1,2,3,5,8,13,21,34,55…… 使用递归,代码如下:
#include<stdio.h> 
int fib(int n) 
{ 
	if(n>2) 
		return fib(n-1)+fib(n-2); 
	else return 1; 
} 
int main() 
{ 
	int i,n; 
	printf("请输入数列个数\n"); 
	scanf("%d",&n); 
	for(i=1;i<=n;i++) 
		printf("%d",fib(i)); 
    return 0; 
}

编辑于 2019-09-24 15:51:09 回复(0)
int fib(int n){ If (n<2){ return n==0 ? 0 : 1; } return fib(n-1)+fib(n-2); }
发表于 2017-04-07 18:15:03 回复(0)
def fib(n):
    if n<2:
        return 1
    a, b = 1, 1
    for _ in range(3, n):
        a, b =b, a+b
    return b

发表于 2017-02-06 21:10:23 回复(0)