智障如我,踩了个 VFP DOwhile 循环的坑

2017-03-13 11:21:51 +08:00
 Aspx

环境:VFP9

问题:编程序求 2+4+8+16+32+…这样的数之和。如果累加数大于 980 时,则程序终止并输出结果

以下代码能正确输出结果:

SET talk OFF 
CLEAR
s=0
n=1
DO WHILE s <= 980
	s=2^n+s
	n=n+1
ENDDO
?s
SET TALK ON
CANCEL

以下代码不能正确输出结果:

SET talk OFF 
CLEAR
s=0
n=1
DO WHILE s <= 980
	n=2^n
        s=n+s
	n=n+1
ENDDO

?s
SET TALK ON
CANCEL

我是个半吊子,不知为何会有这样的差别

894 次点击
所在节点    问与答
1 条回复
dingz
2017-03-13 11:39:23 +08:00
第二段 N 存了临时结果后,已经不是期望值了吧
第二段正确的应该再引入一个变量比如 M
m=2^n
s=m+s
n=n+1
才与第一段是一样吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/347026

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX