在我的回文函数中,if-else-statement
返回未定义。基本上,我试图找到最大的三位数回文数。例如,使用两位数字:99 * 91 = 9009
。
var palindromic = function(n) {
var save,
result,
counter = 900;
var checker = function(string) {
s = string.toString();
if(!(s)) {
return true;
} else if(s[0] !== s[s.length - 1]) {
return false;
}
checker(s.slice(1, -1));
}
var recursive = function() {
result = counter * n;
if(counter === n) {
return;
} else if(checker(result)) { // this line of code here, undefined.
save = result;
}
counter++;
recursive();
}
recursive();
return save;
};
出了什么问题?欢迎任何帮助!
最佳答案
代码中有两个问题
checker()
应将return checker(s.slice(1,-1));
作为最后一行。- 在
recursive()
中,当checker(result)
为 true 时,recursive() 应该返回。
这是更正后的代码。
var palindromic = function (n) {
var save,
result,
counter = 900;
var checker = function (s) {
//s = string.toString();
if ( !(s) ) {
return true;
} else if ( s[0] !== s[s.length-1] ) {
return false;
}
return checker(s.slice(1,-1));
}
var recursive = function () {
result = counter * n;
if ( counter === n ) {
return;
} else if ( checker(result + "") ) { // this line of code here, undefined.
save = result;
return;
}
counter++;
recursive();
}
recursive();
return save;
};
输出:
palindromic(2)
2002
palindromic(3)
2772
palindromic(5)
5005
palindromic(6)
6006
palindromic(9)
8118
palindromic(23423)
188484881
关于javascript - if-else-语句在回文函数中返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34561630/