主题:请大家帮忙分析一下“20”语句
njlbjt
[专家分:0] 发布于 2007-07-07 01:00:00
10 INPUT “X,N=”;X,N
20 T=X
30 S=X
40 FOR K=2 TO N STEP 1
50 L=2*K-1
60 M=1
70 FOR J=1 TO L STEP 1
80 M=M*J
90 NEXT J
100 T=(-1)∧(K-1)*X∧L/M
110 S=S+T
120 NEXT K
130 PRINT “X=”;X,“N=”;N,“S=”;S
140 END
RUN
我认为第“20”令T=X 这个语句没有什么实质性意义,因为在下面的循环中T会被重新赋值,请各位老师帮助分析一下这个程序,看看去除“20”语句是否会影响程序的最终结果,谢谢!
回复列表 (共11个回复)
沙发
Matodied [专家分:7560] 发布于 2007-07-07 09:44:00
不会.
请注意100,110这2句.虽然下面S赋值时会引用T的值,但是T已经在前面被重新赋值了,因此20句没有意义,要不要无所谓.
[quote]∧[/quote]
这个符号QB里有吗?应该改为"^".
板凳
&佑慧妹妹& [专家分:660] 发布于 2007-07-07 18:19:00
没有用,去跟没去一样
3 楼
老大徒伤悲 [专家分:29120] 发布于 2007-07-07 21:30:00
100 T=(-1)∧(K-1)*X∧L/M
这句我强烈建议修改,-1的若干次方,这样的运算式很花时间的。可以在k的循环里设置一个表示符号的变量。x的l次方应使用乘法完成。
例如:
10 INPUT “X,N=”;X,N
30 S=X
35 fh=1
36 xl=x
37 m=1
40 FOR K=2 TO N STEP 1
45 fh=-1*fh
50 xL=xl*x*x
80 M=M*2*(k-1)*(2*k-1)
100 T=fh*xL/M
110 S=S+T
120 NEXT K
130 PRINT “X=”;X,“N=”;N,“S=”;S
140 END
RUN
取消关于m计算的大量重复计算。
4 楼
moz [专家分:37620] 发布于 2007-07-08 12:37:00
那100,110行为什么不合并呢?
少用一个变量及赋值一样能提高丁点效率.
fh变量也应该省略,换用表达式.
5 楼
moz [专家分:37620] 发布于 2007-07-08 14:06:00
INPUT “X,N=”;X,N
S=X
M=1
xL=X
X2=X*X
FOR L=3 TO 2*N-1 STEP 2
M=M*L*(L-1)
xL=xL*X2
S=S+(2-L mod 4)*xL/M
NEXT K
PRINT “X=”;X,“N=”;N,“S=”;S
6 楼
njlbjt [专家分:0] 发布于 2007-07-08 16:26:00
这个例子,是我从网上下载的QB教程里面的例子,因为我是刚刚学QB,以前一点也没有接触过,所以才发到网上请各位老师帮忙分析一下的,不过,令我高兴的是,各位老师不仅给出了答案,还给出了更好的程序结构,在此我表示感谢!!
其实我也觉得“20”语句一点用也没有,不知教材上为什么会这么写程序???
7 楼
老大徒伤悲 [专家分:29120] 发布于 2007-07-08 17:43:00
我给你开始了分析,给你做了那么多的简化,才10分?
8 楼
Matodied [专家分:7560] 发布于 2007-07-08 20:42:00
对,为什么给2楼的打20分?才给我打10分?
9 楼
moz [专家分:37620] 发布于 2007-07-08 21:27:00
哈哈,看来我有走后门的嫌疑了。
10 楼
Lovely哆啦 [专家分:1360] 发布于 2007-07-23 12:46:00
[quote]没有用,去跟没去一样[/quote]
我来回复