【发布时间】:2022-07-02 15:35:00
【问题描述】:
@echo off
setlocal enableDelayedExpansion
:: Fiche 3 Exercice 6
Title Fiche 3 Exercice 6
color B4
Mode con cols=100 lines=40
echo CALCULATRICE FACTORIELLE
set /p nbToCalc=Entre le nombre :
set /a fact=1
call :CalcFact %nbToCalc%
:finfact
echo.
pause
exit
:CalcFact
if !nbToCalc! gtr 0 (
set /a fact= !nbToCalc! * %fact%(!nbToCalc! - 1)
goto :CalcFact
) else (
goto :finfact
)
状态 1:
编写一个脚本来计算并显示一个数字的阶乘。
该脚本将调用一个递归函数。
该数字在脚本启动时作为参数传递。
该函数将返回传入参数的数字的阶乘。
见以下链接:https://fr.wikipedia.org/wiki/Factorielle
备注: 当在重复指令块中访问变量时 用'!并不是 '%'。在程序的开头添加: setlocal enableDelayedExpansion1
【问题讨论】:
-
你说的“写一个脚本”,你确定一定是批处理文件吗?为什么不使用 Powershell?或者任何 UNIX 脚本?
-
我看不到关于你的作业的任何问题?
-
与您的最后一个问题一样,这项任务完全没有意义。我之所以这么说是因为
Set /A只能处理 32 位整数。这意味着通过Call命令传递给您的标签的整数不能大于12。13的阶乘为6227020800,大于最大值2147483647。因此没有理由不使用简单的If命令结构,本质上是一个表if %~1 equ 12 exit /b 479001600,然后你可以echo %errorlevel%。
标签: batch-file