@ECHO OFF SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION IF "%1"=="" ( ECHO.%~nx0 - Calculates factorials recursively. ECHO. ECHO.Usage ECHO. %~n0 [num] ECHO. ECHO. [num] is the number to get the factorial of. GOTO end ) IF %1 LSS 0 ( ECHO.Argument must be non-negative. GOTO end ) CALL :fac %1 ECHO %RETURN% :end ENDLOCAL GOTO :EOF :fac IF %1==0 ( SET RETURN=1 GOTO :EOF ) SET /A TEMP=%1 - 1 CALL :fac %TEMP% SET /A RETURN*=%1 GOTO :EOF