【发布时间】:2020-09-22 18:45:17
【问题描述】:
然而,我尝试编写一个递归回文,尽管我在最后一次迭代中到达了真正的分支,但返回值仍然是未定义的。
因此,如果您在控制台中输入我的函数并使用回文。 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;
}
}
【问题讨论】:
-
尝试返回递归调用
return rekurzivSzigoruPalindrom(str,strLength);,以便递归执行正确完成。 -
function rekurzivSzigoruPalindrom(str, strLength = str.length):str.length不适用于数字 - 您尚未将它们转换为字符串。 -
strLength--; return rekurzivSzigoruPalindrom(str,strLength);: 你可能正在剪辑结尾,但不是开头。 -
看我的代码,比较逻辑,看看有什么不同。
标签: javascript palindrome