【发布时间】:2019-01-05 03:50:44
【问题描述】:
我试图通过使用 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);
递归调用肯定有问题。我很想得到你的帮助。谢谢。我附上了我的代码的输出。
【问题讨论】:
-
你忘了
return递归调用。 -
.slice返回一个数组,然后您尝试使用firstCharacter(str) == lastCharacter(str)比较两个切片。你不能像那样比较数组。
标签: javascript recursion palindrome