第1个回答 2013-11-07
斐波那契数列:1,1,2,3,5,8,13,21……
如果设F(n)为该数列的第n项(n∈N+)。那么这句话可以写成如下形式:
F(0) = 0,F(1)=F(2)=1,F(n)=F(n-1)+F(n-2) (n≥3)
显然这是一个线性递推数列。
通项公式的推导方法一:利用特征方程
线性递推数列的特征方程为:
X^2=X+1
解得
X1=(1+√5)/2, X2=(1-√5)/2.
则F(n)=C1*X1^n + C2*X2^n
∵F(1)=F(2)=1
∴C1*X1 + C2*X2
C1*X1^2 + C2*X2^2
解得C1=1/√5,C2=-1/√5
∴F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}【√5表示根号5】
第2个回答 2013-11-07
#include<iostream.h>
#include<cstring>
char sum[1200];
int s=0,m=0,n;
void main()
{
cin>>n;
char s1[1200],s2[1200];
int a[1200],b[1200];
int he,i;
strcpy(s1,"1");
strcpy(s2,"1");
for(m=2;m<n;m++)
{
memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); a[0]=strlen(s1);
for(i=1;i<=a[0];i++)
{
a[i]=s1[a[0]-i]-'0';
}
b[0]=strlen(s2);
for(i=1;i<=b[0];i++)
{
b[i]=s2[b[0]-i]-'0';
}
he=(a[0]>b[0]?a[0]:b[0]);
for(i=1;i<=he;i++)
{
a[i]+=b[i];
a[i+1]+=a[i]/10;
a[i]%=10;
}
he++;
while((a[he]==0)&&(he>1))
he--;
for(i=he,s=0;i>=1;i--,s++)
{
sum[s]=a[i]+'0';
}
strcpy(s1,s2);
strcpy(s2,sum);
}
cout<<s2<<endl;
}C++语言代码,用高精度写的输入100得第100个数具体值为:354224848179261915075