![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-02 03:32 |
共 48,037 主题排行 / 350,122 发帖 / 今日 2 篇 / 48,250 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » Goto模拟递归计算N的阶乘:) |
| 可打印版本 1,756 / 8 |
| 第1楼 redtek | 发表于 2006-09-30 00:52 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
Goto模拟递归计算N的阶乘:) 深受 pengfei 大侠的 “ :again ... goto again ” 精彩应用的启发,
学着楼主运用的goto原理试着做了一个模拟递归求N!的实验,goto用好了真是方便~:) 再一次感谢 pengfei 大侠这篇 关于数值运算时的进制问题 的大作~:) 计算N的阶乘:) 没有越界和没有非法检查。 为了学习goto的运用之作~:) |
|
| 第2楼 namejm | 发表于 2006-09-30 01:21 |
| 荣誉版主 发帖 1,737 积分 5,226 来自 成都 | |
|
呵呵,set /a redtek*=n 的写法不错。
不过这段代码可以把变量延迟去掉,把所有的叹号对改为百分号对,这样代码就比较简洁了。如果再加上错误检测,流程优化,提示信息的优化……这段代码就更完美了。 |
|
| 第3楼 redtek | 发表于 2006-09-30 01:31 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
多谢版主指导~~:)
|
|
| 第4楼 不得不爱 | 发表于 2006-10-02 20:10 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
你是什么系统?我在2000里算到13就溢出!
下面是我用FOR写的! @echo off |
|
| 第5楼 redtek | 发表于 2006-10-02 23:54 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
系统版本: Windows Server 2003
Microsoft Windows [版本 5.2.3790] [code] C:\TEMP>copy con a.bat @echo off set /p n=请输入 N! : set /a redtek=1 if n==0 echo 0的阶乘为1 && goto :Eof for /l %%i in (1,1,%n%) do set /a redtek*=%%i :Ok echo 阶乘为:%redtek% echo 最大只能计算到 31的阶乘,再大溢出~:) ^Z 已复制 1 个文件。 C:\TEMP>a 请输入 N! :31 阶乘为:738197504 最大只能计算到 31的阶乘,再大溢出~:) C:\TEMP>a 请输入 N! :32 阶乘为:-2147483648 最大只能计算到 31的阶乘,再大溢出~:) [code] 到32的阶乘时溢出:) |
|
| 第6楼 redtek | 发表于 2006-10-03 00:01 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
版主这段代码巧妙,一个循环就全解决了,够精练!佩服~:)
|
|
| 第7楼 不得不爱 | 发表于 2006-10-03 00:04 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
31的阶乘为:738197504?
不对吧! 应该是8.22283865417792281772556288e+33啊 应该是在13的阶乘时溢出,不信你试下!(12的的阶乘=479001600) [ Last edited by qwe1234567 on 2006-10-3 at 00:05 ] |
|
| 第8楼 redtek | 发表于 2006-10-03 01:09 |
| 金牌会员 发帖 1,147 积分 2,902 | |
|
嗯,CALC验证了一遍,到12的时候正确,13!就溢出了:)
Microsoft Windows XP [版本 5.1.2600] 和 Windows Server 2003 两个机器全试了一下,全都是到13就溢出了,哈哈…… |
|
| 第9楼 不得不爱 | 发表于 2006-10-03 02:30 |
| 超级版主 发帖 2,044 积分 5,310 来自 四川南充 | |
|
cmd里最大的数是2147483647
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |