求数列的通项:1,1,2,3,5,8,13,21......(或给出C语言代码)

有通项公式就最好了…如果用C语言来解决,别用递归,会超时…

斐波那契数列指的是这样一个数列:0,1,1,2,3,5,8,13,21……
这个数列从第三项开始,每一项都等于前两项之和。它的通项公式为:(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}(又叫“比内公式”,是用无理数表示有理数的一个范例。)【√5表示根号5】

参考资料:http://baike.baidu.com/view/816.htm

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-07-18
#include<stdio.h>

// 非递归求解,数列首项从0开始

long long fib2(long n)
{
long long a = 1,b = 1;
for(long i = 1;n > 0 && i < n; i++)
{
long long c = b;
b = a;
a = a+c;
}
return a;
}

int main()
{
long n;
printf("输入你想输出的数的个数:\n");
scanf("%ld",&n);
for(long i = 0; i < n ; i++)
printf("%ld\n",fib2(i));
return 0;
}本回答被提问者采纳
第2个回答  2008-12-17
main()
{
int f1=1,f2=1,i,n;
printf("\n input n:") ;
scanf("%d",&n);
printf("%d,%d,",f1,f2);
for(i=3;i<=n;i++)
{
f1=f1+f2;
f2=f2+f1;
printf("%d,%d,",f1,f2);
}
} 公式就是那个了

还有 用 数组的 更简单 例如
i=3
a[i]=a[i-2]+a[i-1]
第3个回答  2008-12-16
f(1)=1
f(2)=1
f(n)=f(n-1)+f(n-2) 当n>2时
相似回答