这篇日志完全是看了一篇日志后的启发,原文为:邪恶的eval和new Function。

很少使用new Array的方式来定义数组,没想到new Array有这么一个妙用,通过new Array(n)我们可以创建n个空元素,同时也就在n个元素中间存在n-1个空白,通过join,我们可以将一些东西放在这些空白中间从而组成我们需要的特殊串,这不禁启发了我的灵感,这个特点可以使我不通过循环就可以很容易的实现一个“有规律元素的连续运算”。比如计算1-100的数值的和。以往我们需要从1循环到100然后求和,但利用数组的这个特性我们可以通过简单的一行代码搞定,代码如下:
复制代码 代码如下:
var i=0,sum=eval('0'+new Array(101).join('+(++i)'));

此外可以做很多类似的数学运算,比如以下几个
复制代码 代码如下:
eval('0'+new Array(11).join('+Math.pow(++i,2)')) //计算1-10的平方和
eval('0'+new Array(100/2).join('+(i+=2)')) //计算2+4+6+...100的和

这些我们以往都通过循环进行的计算,现在都可以一行代码巧妙搞定,不得不叹服编程语言隐含的灵巧,编程的世界总有太多的东西等待我们去发现。

把上面的JavaScript代码改成VBS,就是VBS练习题所谓的骨灰级解法:

复制代码 代码如下:
Dim a(101)
Execute(Join(a,"s=s+i:i=i+1:"))
MsgBox s


原文:http://demon.tw/programming/no-loop-calculate-1-100-sum.html
标签:
1到100的和

免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
评论“vbscript的骨灰级写法计算1到100的和”
暂无“vbscript的骨灰级写法计算1到100的和”评论...

RTX 5090要首发 性能要翻倍!三星展示GDDR7显存

三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。

首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。

据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。