java递归,在字符串中查找目标的出现次数

时间:2013-07-17 03:19:03

标签: java recursion

我试图更熟悉java中的递归。我试图计算给定字符串中出现字符的次数。

public class apptest {

    public static void main(String[] args) {
        apptest c = new apptest();
        String input = "aaa";
        char p = 'a';

        c.freq(input, p);
    }

    public int freq(String c, char p) {
        if (c.length() == 0) {
            return 0;
        } else if (c.charAt(0) == p) {

            return 1 + freq(c.substring(1, c.length()), p);
        } else
            return freq(c.substring(1, c.length()), p);
    }
}

我没有得到任何输出。并完全混淆如何解决这样的问题。我在网上找了freq(c.substring(1, c.length()),p);部分,但是通过代码它没有意义..似乎在每一次传递它仍然会处理'aa'而不一定缩小它..我不是什么看到?

2 个答案:

答案 0 :(得分:4)

你的代码看起来很不错,但你没有得到输出,因为你没有打印它!

只需在主要方法中添加System.out.println(...)即可。

System.out.println("Frequency is: " + c.freq(input, p));

答案 1 :(得分:1)

对于这部分:

  

我在网上查找了freq(c.substring(1,c.length()),p);部分,但通过代码它没有意义..似乎在每一次传递它仍然将处理'aa'而不一定缩小它。

c.substring(1, c.length())缩小字符串c,以便传递给递归调用的内容少一个要处理的字符,从而帮助递归调用最终达到{{1的终止条件}}。因此,可以安全地假设c.length() == 0方法的实现是正确的。