階乗のテストをしていらしたので、私も階乗をバッチでやってみました。0! = 1 には対応していないですね。
もちろん「ねた*1」ですので、、、
たとえば factorial.cmd という名前で保存しこんな感じで。
@rem Usage factorial 1 n (example: factorial.cmd 1 6)@setlocal enabledelayedexpansion
@if %2 leq 1 (
echo %1
) else (
set /A result = %1 * %2
set /A count = %2 - 1
call %0 !result! !count!
)
しかし、32ビット版 Windows では扱う値が限られています。なんかすればいけるのかなー。
C:\Documents and Settings\ari>factorial.cmd 1 5
120
C:\Documents and Settings\ari>factorial.cmd 1 6
720
C:\Documents and Settings\ari>factorial.cmd 1 31
738197504 < これも間違い
*1:ねたにもならないかな……