递归回文既不返回true也不返回false,只是未定义



我试着写一个递归回文,但是,即使我在最后一次迭代时到达了真正的分支,返回值仍然没有定义。

因此,如果你在控制台中键入带有回文的函数。rekurzivSzigoruPalindrom("雷达"(;

它将完美地遍历它,但返回值将是未定义的。你能指出我下面代码中的错误吗?感谢

function rekurzivSzigoruPalindrom(str, strLength = str.length) {
// debug eleje
console.log(strLength);
if (strLength > 1) {
console.log(str[str.length - strLength] + "  " +str[strLength-1] );
}
if(strLength == 1){
console.log(str[str.length-1]+ "   " +str[strLength-1]);
}
//debug vége
if(typeof str == "string" || typeof str == "number"){
if(typeof str == "number"){
str = str.toString();
}


if(strLength > 1){
if(str[str.length - strLength] == str[strLength-1]){
//console.log(strLength);
strLength--;

rekurzivSzigoruPalindrom(str,strLength);
}
}
else if(strLength == 1){
if(str[str.length-1] == str[strLength-1]){
console.log(strLength+"true");
return true;
}
else{
console.log(strLength+"false");
return false;
}    

}
}
else {
return false;
}   

}

您必须返回递归调用的结果。

function rekurzivSzigoruPalindrom(str, strLength = str.length) {
// debug eleje
console.log(strLength);
if (strLength > 1) {
console.log(str[str.length - strLength] + "  " +str[strLength-1] );
}
if(strLength == 1){
console.log(str[str.length-1]+ "   " +str[strLength-1]);
}
//debug vége
if(typeof str == "string" || typeof str == "number"){
if(typeof str == "number"){
str = str.toString();
}


if(strLength > 1){
if(str[str.length - strLength] == str[strLength-1]){
//console.log(strLength);
strLength--;

return rekurzivSzigoruPalindrom(str,strLength);
}
}
else if(strLength == 1){
if(str[str.length-1] == str[strLength-1]){
console.log(strLength+"true");
return true;
}
else{
console.log(strLength+"false");
return false;
}    

}
}
else {
return false;
}   

}

递归:

function recPal(str) {
str=""+str; // for numbers
if(str.length<2) return true;
if(str[0]!=str[str.length-1]) return false;
return recPal(str.slice(1,-1));
};
var strs=[101, 75, "", "x", "xy", "99", "abba", "log", "racecar", "razor", "radar"];
strs.forEach(
word=>
console.log(
"'"+word+"'"+
(recPal(word)?" IS ":" is NOT ")+
"a palindrome"
)
);
.as-console-wrapper { max-height: 100% !important; top: 0; }

相关内容

  • 没有找到相关文章

最新更新