理论上应该是1*2*3*4....*n 这样吧 但用批处理需考虑溢出,2的32次方 先来个批处理数值范围内的,看结果对不,最大数为 12 @echo off set /a n=12,w=1 for /l %%a in (1 1 %n%) do set /a w*=%%a echo %w% 是 %n% 的阶乘 pause
@Echo Off setlocal enabledelayedexpansion set Jx=1 set /p n=请输入: :. if !n! gtr 1 ( set /a y=!n!-1 set /a Jx*=!n!*!y! set /a n-=2 goto . )else echo %jx%&&pause
这个呢?算是递归吗? @echo off if not "%1"=="" goto Fun :Input set /p m=Input: call %0 %m% echo %An% pause>nul goto Input :Fun if %1 EQU 0 ( set An=1 goto :EOF ) if %1 EQU 1 ( set An=1 goto :EOF ) set /a temp=(%1)-1 call %0 %temp% set /a An=(%1)*(%An%)