以文本方式查看主题

-  金字塔客服中心 - 专业程序化交易软件提供商  (http://222.73.7.161/bbs/index.asp)
--  公式模型编写问题提交  (http://222.73.7.161/bbs/list.asp?boardid=4)
----  关于for 递减循环  (http://222.73.7.161/bbs/dispbbs.asp?boardid=4&id=166586)

--  作者:马立秋
--  发布时间:2018/11/20 15:53:15
--  关于for 递减循环
递增循环我理解了。

关于for 递减循环是怎么执行的呢?

for var=n1 downto n2 do expr2;

请问:

这里说的 开始循环执行 expr2语句 每执行一次var减一。
是怎么减一呢?比如:当前日期为1,昨天是2,前天是3,依次往前找5天的话,是从日期为1开始减呢?还是日期为5开始减呢?

--  作者:FireScript
--  发布时间:2018/11/20 16:02:32
--  
不太明白你描述的是什么意思。

递减循环本质和递增循环没有任何区别。只是处理数组数据时候下标从大到小还是从小到大的问题。举个例子 一个数组10个数值,2种循环区别就是先从下标大的数组元素开始循环还是从下标小的数组元素开始循环。

--  作者:马立秋
--  发布时间:2018/11/20 16:32:29
--  
我的意思是,递增循环就是对设定的循环区间里,一个一个的加上去的
比如:计算2日平均线的循环写法如下

fc:=close;
for i=2 to datacount do 
     ma2[i]:(fc[i-1]+fc[i])/2;
老师,您看,是不是循环计算的时候,应该从i=2开始计算到当前天,对吧?那么也就是说,是从前面计算到当前天。一天一天加上去的

=========================
您再看递减循环语句如下:
fc:=close;
for i=datacount downto 2 do 
     ma2[i]:(fc[i-1]+fc[i])/2;

这里是从当前天向i=2的方向计算的。也就是说从后向前计算的,对吧?我想问,递减循环也是从i=2开始减一的操作吗?


--  作者:马立秋
--  发布时间:2018/11/20 16:34:02
--  
还是从当前天执行减一
--  作者:FireScript
--  发布时间:2018/11/20 16:36:47
--  
 不是,第一项是最大值 也就是datacount的值,一只递减到i=2的时候就是最后一次循环了。所以不是从i=2开始递减,而是当递减到i=2就是最后一次循环了。
--  作者:马立秋
--  发布时间:2018/11/20 16:54:53
--  
递增和递减循环,没啥区别,为什么还要两种计算方法呢?计算的效率有区别是吧?
--  作者:FireScript
--  发布时间:2018/11/20 16:58:06
--  
 效率没差别。主要是你要处理的数据形式上有差异。 2种方式供选择,可以少些几句代码,少绕点逻辑弯而已。



--  作者:马立秋
--  发布时间:2018/11/20 17:15:46
--  
哦,多谢老师了。我再消化消化。