任何原因导致返回' undefined&#39 ;?

时间:2016-05-26 19:12:09

标签: javascript

我在LeetCode上做了一个问题,由于某种原因,我的函数一直未定义返回。我基本上只是运行一个递归函数,然后跟踪结果,最后将它们返回到变量endRes中的main函数maximumNumber。

/**
 * @param {number[]} nums
 * @return {string}
 */

function recursion(arr, str) {
    var result = str; 
    if (arr.length <= 1) {
        result+=arr[0];
        return result;
    }
    arr.sort(function(a, b){return b-a});
    var n = arr[0];
    var power = Math.floor(Math.log(n)/Math.LN10);
    for (var i=1; i<arr.length; i++) {
        var index;
        if (arr[i]>(arr[0]/(Math.pow(10, power))) && Math.floor(Math.log(arr[i])/Math.LN10) < power) {
            result+=arr[i].toString();
            arr.splice(i,1);
            recursion(arr, result);
        }
        if (i==arr.length-1){
            result+=arr[0].toString();
            arr.splice(0,1);
            recursion(arr, result);
        }
    }
}

var largestNumber = function(nums) {
    endRes = recursion(nums, "");
    return endRes;
};

1 个答案:

答案 0 :(得分:0)

recursion()函数内部,您不会返回递归调用。

for (var i=1; i<arr.length; i++) {
    var index;
    if (arr[i]>(arr[0]/(Math.pow(10, power))) && Math.floor(Math.log(arr[i])/Math.LN10) < power) {
        result+=arr[i].toString();
        arr.splice(i,1);
        return recursion(arr, result); // add return here
    }
    if (i==arr.length-1){
        result+=arr[0].toString();
        arr.splice(0,1);
        return recursion(arr, result); // add return here
    }
}