我有一個程序將遞歸調用一個函數。下面的程序給我StackOverflowError
。Java循環StackoverflowError - 當同一個函數再次出現時,是否有可能繼續前一個循環?
我預期的輸出是
normal print, normal print, normal print, normal print, inside function splcase now, call action key word now, normal print, normal print, normal print, normal print, normal print
。
有沒有可能控制遞歸函數,以便我得到所需的輸出?
public class mytest1 {
String path, keyword;
public static void main(String args[]){
exec_script("normal");
}
public static void exec_script(String exec_path){
for (int i=0; i<10; i++) {
if (i==4) {
exec_path = "spl";
}
switch (exec_path){
case "spl":
spl_case();
break;
case "normal":
System.out.println("normal print");
break;
case "call_action_path":
System.out.println("call action key word now");
break;
}
}
}
public static void spl_case(){
System.out.println("inside function splcase now");
exec_script("call_action_path");
}
}
如果可能,請解釋您所做的更改。代碼唯一答案並不真正鼓勵,因爲它可能會混淆OP和未來的讀者。 – 2014-11-03 05:58:25
如果我們沒有返回函數的調用,它將不斷調用該函數,所以我在函數中添加了返回以在執行switch case後停止執行 – Ricky 2014-11-03 06:01:26
@Ricky,您的程序只是打印「正常打印」並退出。 – 2014-11-03 06:05:02