可能是算法有问题,希望高手能指出!马上就要上机考试了
某级数的前两项A1=1,A2=1,以后各项有如下关系A3=A1+2*A2
以后每一项都是它前面第2项与前面第一项的2倍的和,依次对整数M=100,1000,10000求出对应的n值,满足Sn<M,且Sn+1>=M。Sn=A1+A2+....+An,并依次把n存到b[0],b[1],b[2]中,我写的程序:
main()
{
int b[3],count=0,s=0,i,x=1,y=1,z,a[3]={100,1000,10000};
for(i=0;i<3;i++)
{while(s<a[i]-2)
{
z=x+2*y;
s=s+z;
x=y;
y=z;
count++;
}
b[i]=count; printf("\n%d",b[i]);
}
getch();
}
运行结果是:
5
8
10
手工算也不对啊,S5才多少啊1+1+3+7+17=29
为什么呢?