所以我在試圖解決這個編碼問題時遇到了麻煩:以下是他們希望我回答的四個問題: 'getValue(...)' 將使用以下輸入執行多少次,結果是什麼?
(1) getValue("foo", 0);
(2) getValue("bar", 2);
(3) getValue("baz", 0);
(4) getValue("fubar", 1);
我知道前兩個答案:
1) 將執行一次並返回 1
2)將執行1次並返回3但最後兩個問題(3,4)我不明白。任何人都可以幫助澄清這段代碼到底在做什麼並暗示答案是什麼?
這是代碼:
import java.util.HashMap;
import java.util.Map;
public class myClass {
private Map<String,Integer> map;
public myClass() {
map = new HashMap<>();
map.put("foo", 1);
map.put("bar", 3);
}
public int getValue(String input, int numRetries) throws Exception {
try {
return map.get(input);
}
catch (Exception e) {
if (numRetries > 3) {
throw e;
}
return getValue(input, numRetries + 1);
}
}
先感謝您。
您在 (1) 和 (2) 中正確回答的代碼嘗試從 HashMap 獲取值,因為它是鍵。
getValue() 函數是一個遞歸函數,這意味著它會根據“numRetries”值多次調用自己
(3) 代碼調用自身 4 次(在 '>3' 子句變為真並拋出異常之前,numRetries 從 0,1,2,3 開始)
(4) 代碼調用自身 3 次(在 '>3' 子句變為真並拋出異常之前,numRetries 從 1,2,3 開始)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句