[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[数值计算] 这道题哪个的代码最简单

这是一道数学题  递增游戏     上次运行结果+本次运算次数=本次应得值

设v0=0  n=0并以+1递增得到V1     请运算出v1,v2,v3........v50

例:
    v0+n=v1  >>>>>> 0+0=0     起始值  v0=0  运行次n=0 得结果v1=0
    v1+n=v2>>>>>>>0+1=1     上次得数  v1=0  + 运行次数n=1 得结果v2=1
    v2+n=v3>>>>>>>1+2=3      上次得数V2=1  加上运行次数2=3
    v3+n=v4>>>>>>>3+3=6       上次得数v3=3  加上运行次数3=6
    v4+n=v5>>>>>>>6+4=10      上次得数V4=6  加上运行次数4=10
    v5+n=v6>>>>>>>10+5=15      上次得数V5=10  加上运行次数5=15


请一直运行50次递增     
v49+n=v50 >>>>>>1225+50=1275

显示如二楼  

[ 本帖最后由 x9tiancmd 于 2009-4-20 23:57 编辑 ]

哈哈 大家看了是不是觉得很有意思

这数字游戏 有时躺床上多想想,有的东西其实是我们想复杂了
其实什么公式都没有用, 只用了两个变量延迟,
当然公式还是有的说白了就 for /L  

根本就不应定义公式  呵呵呵   FOR  /L  他的运行规则就是公式嘛    因为 定义v+=%%i  (也就是说V+是这次的量 那上次的呢?上次不就是V了)

注:上次的呢? 就是说上次运行的得数值%%i=v
   是不是觉得其怪我没有定义 V值  只定义V+ 为什么它能运行, 嘿嘿因为 N=%%i     
   N 是以+1递增的呀  何以见得?  这不是吗(0,1,50)
        因为: N=%%i  V+=%%i

     又有    (0,1,50) 得 N以+1递增
   所以  SET V=  可以省略


真是七个弯又八拐 呵呵呵    有意思的变延迟

[ 本帖最后由 x9tiancmd 于 2009-4-22 00:20 编辑 ]

TOP

其实这个变量这样写最有意思

@echo off
color 0d
setlocal enabledelayedexpansion
for /l %%i in (0,1,50) do (set  n=%%i&&set /a v+=%%i&&echo. &&echo 本次为第!n!次递增&&echo 上次得数+行次!n!="!v!"&&echo -------------------------------- )&pause>nul
echo 共持行了%n%次 最终结果为%v%
pause
五楼的我原来也是你那么做的,可是我睡在床上想了好久其实这样最简单,真有意思变量还能这样延迟

我把装饰的代码用黄色隐了, 这样看因当好分析些

[ 本帖最后由 x9tiancmd 于 2009-4-22 00:16 编辑 ]

TOP

上面说了呀     就是  第一次运算结果  代入第二次运算   

假如 现在进行第0次运算:  (这部可以省去)
0开始     0+0=0
接着进行第一次运算:   
代入上次的结果0 再加上本次的运算次数1
第一次运算式为  0+1=1

接着进行第二次运算:
代入第一次的结果1   再加上本次的运算次数2
第二次运算式为   1+2=3

............................................................

[ 本帖最后由 x9tiancmd 于 2009-4-21 23:47 编辑 ]

TOP

这个问题啊....怎么说呢。
实际上Vn=n*n/2+n/2

因此,代码应该这么写:
  1. @echo off&setlocal EnableDelayedExpansion
  2. for /l %%a in (1,1,50) do (
  3. set/a v=%%a*%%a/2+%%a/2
  4. echo 本行为第%%a次递增
  5. echo 上次得数+行次%%a="!v!"
  6. echo -------------------)
  7. pause
复制代码
搞定。用一个公式解决。不去搞那么多复杂的东西


[ 本帖最后由 htnet11 于 2009-4-21 17:38 编辑 ]

TOP

这道题哪个的代码最简单

这样的标题有什么意义?别人有类似问题时使用什么样的关键字才能搜索到你这个帖子?至少应该把“这道题”大概是什么东西简单描述一下吧?
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

是不是这样的:
  1. @echo off
  2. for /l %%a in (1,1,50) do (
  3.     set /a num+=%%a
  4.     echo 本次为第%%a次递增
  5.     if %%a gtr 1 call,echo 上次得数+%%a="%%num%%"
  6.     echo ------------------
  7. )
  8. pause>nul
复制代码
***共同提高***

TOP



[ 本帖最后由 x9tiancmd 于 2009-4-20 23:31 编辑 ]

TOP

返回列表