104年普考程式設計概要
三、如下程式碼所構成的方法/ 函數 (method/function),在呼叫時,使用recursiveFlowControl(3, “ss”, “dd”, “aa”),請問該方法被呼叫執行後,顯示結果為何?如為語法有誤或執行時期發生中斷,請說明原因,並請修正錯誤或引起中斷的程式,讓程式可以正常執行結束並顯示結果。註:System.out.println( );會將小括號中的字串顯示到螢幕輸出裝置。(15分) void recursiveFlowControl(int num, String s1, String s2, String s3) { System.out.println(“... I am here ...”); if (num == 1) { System.out.println(“num==1, Move from ” + s1 + “ to ” + s2); } else { recursiveFlowControl(num-1, s1, s3, s2); System.out.println(“num!=1, Move from ” + s1 + “ to ” + s2); recursiveFlowControl(num-1, s3, s2, s1); } } // End of recursiveFlowContorl |
答:
package test1_1; public class Main { public static void main(String[ ] args) { recursiveFlowControl(3, "ss", "dd", "aa"); } static void recursiveFlowControl(int num, String s1, String s2, String s3) { System.out.println("... I am here ..."); if (num == 1) { System.out.println("num==1, Move from " + s1 + " to " + s2); } else { recursiveFlowControl(num-1, s1, s3, s2); System.out.println("num!=1, Move from " + s1 + " to " + s2); recursiveFlowControl(num-1, s3, s2, s1); } } // End of recursiveFlowContorl } |
執行結果:
... I am here ...
... I am here ...
... I am here ...
num==1, Move from ss to dd
num!=1, Move from ss to aa
... I am here ...
num==1, Move from dd to aa
num!=1, Move from ss to dd
... I am here ...
... I am here ...
num==1, Move from aa to ss
num!=1, Move from aa to dd
... I am here ...
num==1, Move from ss to dd
說明: