javascript - if-else-语句在回文函数中返回未定义

标签 javascript recursion undefined

在我的回文函数中,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;
};

出了什么问题?欢迎任何帮助!

最佳答案

代码中有两个问题

  1. checker() 应将 return checker(s.slice(1,-1)); 作为最后一行。
  2. 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/

相关文章:

javascript - 使用 TypeORM 迁移如何在迁移期间为列播种

javascript - iOS JavaScript 桥

java - 通过递归分而治之获得数组中的最大数字

javascript - 来自 Watson Translator 的 JSON 响应未定义

angularjs - HotTowel Angular Breeze 配置未定义

ruby - ruby 语法中的未定义方法错误

javascript - 按内部数组值过滤数组

javascript - ES6 类内部工作原理 : prototype assignments understanding

javascript - 非常大的递归javascript

algorithm - 在没有单独函数的情况下实现递归