关于使用Java中的递归计算元音的澄清

时间:2015-10-20 14:12:15

标签: java recursion

我需要澄清我的一个作业问题; 因为它声明"实现一个递归方法来计算并返回给定字符串中的小写元音总数" 以使其更容易,假设有帮助方法(让我们称之为isVowel(ch))如果给定的字符是小写元音则返回 true ,否则返回false。

所以:isVowel(ch)如果字符是小写元音,则返回true,否则返回

所以对于第一个问题,它要求确定一个合适的停止案例:

public static int cVowels (String s)
    if (s.length() == 0) {
        return 0;
    }
}

这是对的吗?

接下来的问题是它要求递归地实现该方法并创建返回给定字符串s中的小写元音数量的代码。这就是我们假设有一种帮助方法isVowel(ch)的地方。 (有点被困在这里)

public static int cVowels (String s) {
    if (s.length() == 0) {
        return 0;
    } else {
        int counter = cVowels(s.substring(1));
        if (isVowel(s.charAt(0)) == true) {
            return 1+counter;
        } else 
            return counter;
        }
    }
}

有人可以澄清代码是否确实正确吗?如果没有,问题出在哪里?由于假定的辅助方法而无法对其进行测试。

由于

1 个答案:

答案 0 :(得分:2)

要回答你的问题,逻辑看起来很合理。这不是我将如何处理这个问题,但看起来它仍然可以工作。你实际上是在从左边的字符串末尾开始检查元音,但是不管你的船是什么漂浮。

你可以轻松编写一个帮助方法来测试它,对于初学者学习基本概念它应该看起来像这样:

public static boolean isVowel (char ch) {
    if (ch=='a' || 
        ch=='e' ||
        ch=='i' ||
        ch=='o' ||
        ch=='u') 
    {
        return true;
    } else{
        return false;
    }
}