因此,我很难解决这个编码问题:这是他们要我回答的四个问题: 使用以下输入,“ 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);
}
}
谢谢。
答案 0 :(得分:0)
您在(1)和(2)中正确回答的代码会尝试从HashMap获得给定键的值。
getValue()函数是一个递归函数,这意味着它会根据'numRetries'值多次调用自身
(3)代码调用自身4次(其中numRetries从0、1、2、3开始,直到'> 3'子句变为true并引发异常)
(4)代码调用自身3次(其中numRetries从1,2,3开始,直到'> 3'子句变为true并引发异常)