![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-12 14:24 |
共 47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » 【分享】bat递归的"917“新发现 |
| 可打印版本 1,432 / 14 |
| 第1楼 plp626 | 发表于 2009-04-10 14:09 |
| 银牌会员 发帖 1,020 积分 2,278 | |
|
【分享】bat递归的"917“新发现 命令行下键入
以下代码保存为f.bat [ Last edited by plp626 on 2009-4-10 at 14:11 ] |
|
| 第2楼 yishanju | 发表于 2009-04-10 17:23 |
| 银牌会员 发帖 1,357 积分 1,488 | |
|
真不敢运行
话说高人的代码向人来高深莫测 |
|
| 第3楼 knoppix7 | 发表于 2009-04-10 22:20 |
| 银牌会员 发帖 634 积分 1,287 来自 cmd.exe | |
|
来回Call的话就会这样.
Call有限制的.. |
|
| 第4楼 Pierre | 发表于 2009-04-11 01:11 |
| 初级用户 发帖 19 积分 30 | |
|
H:\Documents and Settings\Pierre>f 1000 ans
****** B A T C H R E C U R S I O N exceeds STACK limits ****** Recursion Count=619, Stack Usage=90 percent ****** B A T C H PROCESSING IS A B O R T E D ****** |
|
| 第5楼 Pierre | 发表于 2009-04-11 01:14 |
| 初级用户 发帖 19 积分 30 | |
|
620就超出了,看来最多619
而实际上超过33就不能算了,而32和33都是-2147483648 |
|
| 第6楼 chenall | 发表于 2009-04-11 05:22 |
| 银牌会员 发帖 469 积分 1,276 来自 福建泉州 | |
|
由于CMD下
数字精确度限为 32 位. 所以最多到33就不能计算了,超出最大值. |
|
| 第7楼 plp626 | 发表于 2009-04-11 07:55 |
| 银牌会员 发帖 1,020 积分 2,278 | |
Originally posted by Pierre at 2009-4-11 01:14 AM: 你这是个什么系统,怎么会是619呢? ****** B A T C H R E C U R S I O N exceeds STACK limits ****** Recursion Count=917, Stack Usage=90 percent ****** B A T C H PROCESSING IS A B O R T E D ****** |
|
| 第8楼 不得不爱 | 发表于 2009-04-12 07:55 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
Originally posted by Pierre at 2009-4-11 01:14: 我也是递归到917就后就报错了 而上面的计算方法中n!结算到 13!就已经溢出了,超过12阶后计算出来的都是错误的! |
|
| 第9楼 不得不爱 | 发表于 2009-04-12 08:14 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
我刚才试了下递归层数好像还跟什么有关系,如下面的
****** B A T C H R E C U R S I O N exceeds STACK limits ****** Recursion Count=1240, Stack Usage=90 percent ****** B A T C H PROCESSING IS A B O R T E D ****** 说明最大递归次数是1240 [ Last edited by 不得不爱 on 2009-4-12 at 08:19 ] |
|
| 第10楼 freeants001 | 发表于 2009-04-12 09:00 |
| 中级用户 发帖 244 积分 330 来自 湖北 | |
|
****** B A T C H R E C U R S I O N exceeds STACK limits ******
Recursion Count=917, Stack Usage=90 percent ****** B A T C H PROCESSING IS A B O R T E D ****** 917;) |
|
| 第11楼 plp626 | 发表于 2009-04-12 10:48 |
| 银牌会员 发帖 1,020 积分 2,278 | |
Originally posted by 不得不爱 at 2009-4-12 07:55 AM: 我只是举了个递归简单的例子,超过13当然作为阶乘的结果都是错误的 其实在cmd里没有溢出一说,他只是循环移位,不管数值范围。 这个例子更简洁,好! 不过也不知道为什么是1240了 |
|
| 第12楼 Pierre | 发表于 2009-04-12 13:57 |
| 初级用户 发帖 19 积分 30 | |
|
2003 r2 ent x64
|
|
| 第13楼 everest79 | 发表于 2009-04-12 22:20 |
| 金牌会员 发帖 1,127 积分 2,564 | |
|
阀值应是2480吧
递归有进有出的 这应跟线程的页面文件或内存分配有关 |
|
| 第14楼 523066680 | 发表于 2009-10-14 20:04 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
啥? 我的这样
****** B A T C H R E C U R S I O N exceeds STACK limits ****** Recursion Count=1240, Stack Usage=90 percent ****** B A T C H PROCESSING IS A B O R T E D ****** |
|
| 第15楼 523066680 | 发表于 2009-10-14 20:07 |
| 银牌会员 发帖 1,133 积分 2,362 | |
|
有一个好像可以超越call层次的方法
建立一个xxx.bat 代码为 好像返回的时候环境不能恢复……多此一举了 [ Last edited by 523066680 on 2009-10-14 at 20:44 ] |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |