2017-11-17 117 views
0

我崩溃了我的脑袋以了解错误在这个批处理脚本中的位置,用于通过递归函数“pow”计算给定数量的pow,多次(在脚本中设置功率为3^3)用于计算pow的递归批处理脚本

我得到的错误是: “order1”未被识别为内部或外部命令,可操作程序或批处理文件。 “base22”不被识别为内部或外部命令,可操作程序或批处理文件。 这两个错误都以顺序行显示,无数次直到“批量递归超过堆栈限制”语句停止递归的比较。 有人能够在脚本中找到错误?

@echo off 

set /a base1=3 
set /a base2=3 
set /a order=3 
call :pow %base1%, %base2%, %order% 
EXIT /B %ERRORLEVEL% 

:pow 
set /a base11=%~1 
set /a base22=%~2 
set /a order1=%~3 
order1=order1-1 
base22=base11*base22 
if %order1% GTR 0 (call :pow %base11%, %base22%, %order1%) 
else(echo the calculated pow is %base22%) 
EXIT /B 0 
+0

@pjs,实际上它们缺少SET/A作为命令的一部分。当使用SET/A时,你不需要变量的百分号。 – Squashman

+0

@Squashman谢谢。对shell脚本更熟悉,但是第13行和第14行肯定会让我怀疑。 – pjs

+0

WOPR,'IF ELSE'的语法不正确。打开cmd提示符并键入:'IF /?'。它会告诉你使用'IF ELSE'的正确语法。 – Squashman

回答

0

以下是我会考虑在批处理文件中这样做:

@Echo Off 
Set "num1=3" 
Set "num2=3" 
Set "expo=3" 

Set/A base=num1*num2 
Set "rslt=1" 
For /L %%A In (1 1 %expo%) Do Set/A rslt*=base 
Echo %rslt% 
Pause 

要知道,你会被最大32位整数受到严重限制。