public static int countX(String str) {
if (str.length() == 0) {
return 0;
}
if (str.charAt(0) == 'x') {
return 1 + countX(str.substring(1));
} else {
return countX(str.substring(1));
}
}
给出输入字符串“ xxx”,上述方法应返回3。 我了解该方法的流程,如果找到'x',则“ return 1 + countX(str.substring(1));” 行加一个。我不明白的是,该返回值如何延续到下一次迭代/递归中?我看不到增量的值存储在任何地方。
答案 0 :(得分:1)
查看第return 1 + countX(str.substring(1));
行
现在假设str为“ xx”,因此传递给递归调用的子字符串为“ x”。
因此,在该调用中,由于第一个字符为“ x”,因此它将再次执行
return 1 + countX(str.substring(1));
在下一个递归调用中,子字符串为空,因此它对上一个调用返回零,然后对前一个调用返回(1 + 0),对上一个调用返回(1 +(1 +0))调用该方法,因此字符串“ xx”的结果变为1 + 1 + 0 =2。