javascript - 使用 JavaScript 进行递归回文检查

标签 javascript recursion palindrome

我试图通过使用 javascript 的递归来确定字符串是否为回文。但我无法弄清楚我在代码中遗漏了什么。

var firstCharacter = function(str) {
    return str.slice(0, 1);
};

var lastCharacter = function(str) {
    return str.slice(-1);
};

var middleCharacters = function(str) {
    return str.slice(1, -1);
};

var isPalindrome = function(str) {
    if(str.length < 2) {
        return true;
    } else {
        if(firstCharacter(str) == lastCharacter(str)) {
            isPalindrome(middleCharacters(str));
        } else return false;
    }
};

var checkPalindrome = function(str) {
    console.log("Is this word a palindrome? " + str);
    console.log(isPalindrome(str));
};


checkPalindrome("a");
//Program.assertEqual(isPalindrome("a"), true);
checkPalindrome("matom");
//Program.assertEqual(isPalindrome("motor"), false);
checkPalindrome("rotor");
//Program.assertEqual(isPalindrome("rotor"), true);

肯定是递归调用出了问题。我很想得到你的帮助。谢谢。我附上了我的代码的输出。

enter image description here

最佳答案

这是另一个递归回文。

function checkPalindrome(str){
    if(str.length === 1) return true;
    if(str.length === 2) return str[0] === str[1];
    if(str[0] === str.slice(-1)) return checkPalindrome(str.slice(1,-1))
    return false;
}

console.log(checkPalindrome('a')) // true
console.log(checkPalindrome('matom')) // false
console.log(checkPalindrome('rotor')) // true

关于javascript - 使用 JavaScript 进行递归回文检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51567811/

相关文章:

java - Java 中的回文程序没有给出正确的输出

Java 回文检查器 - 不区分大小写

javascript - 如何检查一个值是否大于另一个值

javascript - jQuery 定时通知 onclick

C: x = !y 是什么意思?

c++ - 递归查找子集

c - C 编程简介 - [期末考试示例] 回文函数

javascript - Summernote通过laravel中传递的参数设置文本

javascript - 如何在两个单元格之间的 Canvas 线上动态绘制图像

algorithm - 在使用时间变量寻找关节点算法中,为什么我们不取子节点和父节点的低时间的最小值