一道简单的编程题

[复制链接]
查看11 | 回复1 | 2009-1-30 11:46:24 | 显示全部楼层 |阅读模式
某级数的前两项A1=1,A2=1,以后各项具有如下关系:An=An-2+2An-1.
下列程序的功能是:要求依次对于整数M=100,1000和10000求出对应的n值,使其满足:Sn=M,这里Sn=A1+A2+...+An,
并依次把n值存入数组单元b[0],b[1]和b[2]中,请编制jsvalue()函数来实现此功能, 最后调用函数writeDat()把数组b[]中的值输出到out.dat文件中。void jsvalue() /*标准答案*/
{int a1=1,a2=1,n=1,an;
int sum0,sum;
sum0=a1+a2;
while(1)
{an=a1+a2*2;
sum=sum0+an;
a1=a2; a2=an; n++;
if (sum0100)
b[0]=n;
if (sum01000)
b[1]=n;
if (sum010000) {b[2]=n; break;}
sum0=sum;
}
}
答案中n的初值不对吧,哪位给解释一下呢?

回复

使用道具 举报

千问 | 2009-1-30 11:46:24 | 显示全部楼层
n的初值是不对,我感觉n的初值应该为3..因为根据这个式子an=a1+a2*2;能得到a3=a1+2*a2...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行