递归计算字符串中的元音数量(JavaScript)

Recursively count a number of vowels in a string (JavaScript)

本文关键字:JavaScript 字符串 递归计算      更新时间:2023-09-26

有人能告诉我代码中做错了什么吗?我需要使用递归计算字符串中元音出现的次数。函数isVowels检查字符是否为元音,并且是否有效。但是下面的代码不起作用。。。

function countVowels(str) {
    var length = str.length;
    if (length == 0) {
        return 0;
    }
    if (isVowel(str.charAt(length)) == false) {
        return countVowels(str.substring(0, length - 1));
    }
    return 1 + countVowels(str.substring(0, length - 1));
}

字符串中的字符与数组中的元素一样,都是零索引的。您将需要使用.charAt(length-1),或者您将获得字符串末尾之后的字符(这将产生空字符串)。这应该做到:

function countVowels(str) {
    var length = str.length;
    if (length == 0) {
        return 0;
    }
    if (isVowel(str.charAt(length - 1)) == false) {
        return countVowels(str.substring(0, length - 1));
    }
    return 1 + countVowels(str.substring(0, length - 1));
}

然而,您可以通过不调用递归部分两次并从前面计数来简化这一点:

function countVowels(str) {
    if (str.length == 0)
        return 0;
    return (isVowel(str.charAt(0)) ? 1 : 0) + countVowels(str.slice(1));
}