解:∵分数序列为2/1,3/2,5/3,8/5,13/8,21/13,……
∴令F(n)为斐波那契数列,有分数序列的通项公式为:a[n]=F(n+2)/F(n+1)
∵F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}
∴a[n]={[(1+√5)/2]^(n+2) - [(1-√5)/2]^(n+2)}/{[(1+√5)/2]^(n+1) - [(1-√5)/2]^(n+1)}
按此公式编制一段1到20的循环小程序,即得到结果:32.6602607986416 【此为VB下运行的结果】
也可直接在“C语言”中编制如下小程序:
#include "stdio.h"
main()
{
int i;
float m=1,n=1,t,s=0;
clrscr();
for(i=1;i<=20;i++)
{
t=m+n;
s=s+t/n;
m=n;
n=t;
}
printf("s is %9.6f\n",s);
getche();
}
【这样的写法,完全符合斐波那契数列的展开顺序。本程序在TC3.0调试通过。】
这是一道按斐波那契数列的次序,去掉第一项后,按一后一前的次序组成的分数序列,所以楼主抄写该分数序列时,把最后一项“21/13”写成“21/12”了,这应该是个“笔”误,请楼主检查一下。
另外,一楼在程序中写了“b+=2;”,显然没有遵照斐波那契数列的展开的要求:每一项是前两项的和。这样,计算的结果就和实际结果大相径庭了。
... 这是语言编程吧?
摘个答案
#include "stdio.h"
int main()
{
double ans=0;
double a=1,b=2;
int i=0;
ans=0;
for (i=0;i<20;i++)
{
ans+=a/b;
a+=b;
b+=2;
}
printf("%f\n",ans);
}
我算的结果不是那个32
我算的是31.042226813624282
用flash编程的,不知道对不对
var i:int=0;
var a:int=1;
var b:int=1;
var c:int=0;
var sum:Number=0;
while(i<19)
{
c=a+b;
sum+=c/b;
a=b;
b=c;
i++;
}
txtBox.text=String(sum);