标题: [数值计算] 这道题哪个的代码最简单 [打印本页]
作者: x9tiancmd 时间: 2009-4-20 22:41 标题: 这道题哪个的代码最简单
这是一道数学题 递增游戏 上次运行结果+本次运算次数=本次应得值
设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 编辑 ]
作者: x9tiancmd 时间: 2009-4-20 22:57
[ 本帖最后由 x9tiancmd 于 2009-4-20 23:31 编辑 ]
作者: batman 时间: 2009-4-21 08:54
是不是这样的:- @echo off
- for /l %%a in (1,1,50) do (
- set /a num+=%%a
- echo 本次为第%%a次递增
- if %%a gtr 1 call,echo 上次得数+%%a="%%num%%"
- echo ------------------
- )
- pause>nul
复制代码
作者: Batcher 时间: 2009-4-21 09:56
这样的标题有什么意义?别人有类似问题时使用什么样的关键字才能搜索到你这个帖子?至少应该把“这道题”大概是什么东西简单描述一下吧?
作者: htnet11 时间: 2009-4-21 16:35
这个问题啊....怎么说呢。
实际上Vn=n*n/2+n/2
因此,代码应该这么写:- @echo off&setlocal EnableDelayedExpansion
- for /l %%a in (1,1,50) do (
- set/a v=%%a*%%a/2+%%a/2
- echo 本行为第%%a次递增
- echo 上次得数+行次%%a="!v!"
- echo -------------------)
- pause
复制代码
搞定。用一个公式解决。不去搞那么多复杂的东西
[ 本帖最后由 htnet11 于 2009-4-21 17:38 编辑 ]
作者: x9tiancmd 时间: 2009-4-21 23:43
上面说了呀 就是 第一次运算结果 代入第二次运算
假如 现在进行第0次运算: (这部可以省去)
从0开始 0+0=0
接着进行第一次运算:
代入上次的结果0 再加上本次的运算次数1
第一次运算式为 0+1=1
接着进行第二次运算:
代入第一次的结果1 再加上本次的运算次数2
第二次运算式为 1+2=3
............................................................
[ 本帖最后由 x9tiancmd 于 2009-4-21 23:47 编辑 ]
作者: x9tiancmd 时间: 2009-4-21 23:52 标题: 其实这个变量这样写最有意思
@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 编辑 ]
作者: x9tiancmd 时间: 2009-4-21 23:54 标题: 哈哈 大家看了是不是觉得很有意思
这数字游戏 有时躺床上多想想,有的东西其实是我们想复杂了
其实什么公式都没有用, 只用了两个变量延迟,
当然公式还是有的说白了就 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 编辑 ]
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |