CodingBat.com的递归减法问题

时间:2018-11-24 20:53:24

标签: java recursion

我正在尝试从CodingBat.com解决此问题。 -https://codingbat.com/prob/p143900

我运行两次递归,然后减去它们的值以给出最终答案。 I和J分别获得正确的值,但是当我执行i-j时,结果没有意义。

public int countHi2(String str) {
  if(str.length() == 0)
    return 0;

  int i = count(str, "hi");
  int j = count(str, "xhi");

  return i-j;

}

public int count(String str, String match)
{
  int i = str.indexOf(match);

  if(i != -1)
    return 1 + countHi2(str.substring(i+match.length()-1));
  else
    return 0 + countHi2(str.substring(1));
}

2 个答案:

答案 0 :(得分:0)

您可能想使用:

str.substring(i+match.length())

假设您的匹配项位于索引 3 上,并且要匹配的单词的长度为 2 ,那么您希望来自索引 5 的子字符串到最后。 因此,

str.substring(5); 

其中包含索引 5

不过,我不明白您为什么使用

return 0 + countHi2(str.substring(1));

因为如果找不到匹配项,此条件将成立,那么在子字符串中再次检查匹配项又有什么意义呢!

答案 1 :(得分:0)

我认为您非法对待type。您不应该使用外部方法,甚至不要分割字符串。

None