2013-12-13 83 views
-2

這是AP計算機科學中的問題。遞歸方法調用確定輸出

public void doSomething(int value) 
{ 
    if(0 < value && value < 10) 
    { 
     doSomething(value – 1); 
     doSomething(value + 1); 
     System.out.print(" " + value); 
    } 
} 

以下哪個將被打印作爲呼叫doSomething的(4)的結果? A。 4 3 2 1 5 6 7 8 9 B。 4 3 5 2 6 1 7 8 9 C。 9 8 7 6 5 1 2 3 4 D。 9 8 7 1 6 2 5 3 4 E。由於無限遞歸,將不會打印任何內容

正如我正在研究解決方案 - 它似乎對我無限遞歸E.是否正確?考慮到每次選擇時間少於2分鐘,最快的解決方案是什麼? 獲得最快方法的任何幫助都會有所幫助。

這個問題應該是手寫的。您無法運行代碼來檢查答案。

+1

試試看看? – TypeIA

+0

我可以通過編寫代碼並運行它。但它應該是手工追蹤的。 – user3096748

+0

尋找手跡追蹤代碼的最佳/最快的方法。 – user3096748

回答

0

這是無限遞歸,因爲值總是下降,由1

+1

如果初始調用的「值」在1和9之間(包括1和9),那麼它是無限的。調用'doSomething(-2)'將不會打印任何內容並立即終止。否則你是對的。 – TypeIA

2

你的問題產生StackOverflow由於無限遞歸增加。下次你應該爲自己嘗試一下。

+0

謝謝。我應該提到這是APCS考試問題,應該是手寫的。你不能編譯代碼並運行它。 – user3096748