2017-11-17 118 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位整數受到嚴重限制。