递归函数返回未定义的javascript

时间:2020-02-10 19:59:50

标签: javascript function recursion

我正在尝试创建一个凯撒密码,我知道这可能不是最好或最简单的方法,但是我创建了一个递归函数,该函数循环为每个字符添加数字以将其更改为另一个字符,但是当我运行代码而不是得到一个字符作为答案时,我却无法定义

'''

const caesar = function(inputString, shiftNo) {
    let outputString = "";
    for (let i = 0; i < inputString.length; i++){
        let unicodeCode = inputString.charCodeAt(i);

        if ( unicodeCode <= 90 && unicodeCode >= 65 || unicodeCode <= 122 && unicodeCode >= 97){
            outputString += recCounter(unicodeCode, shiftNo);
        }
        else{
            outputString += inputString.charAt(i);
        }
    }
    return outputString;
}

function recCounter(unicodeCode, shiftNo){
    let shiftedUniCode = unicodeCode;
    let substractedShiftNum = shiftNo;
    if (shiftedUniCode === 123){
        shiftedUniCode = 97;
    }
    else if (shiftedUniCode === 91){
        shiftedUniCode = 65;
    }
    if (shiftNo === 0){
        return String.fromCharCode(shiftedUniCode);
    }
    else {
        recCounter(shiftedUniCode + 1, substractedShiftNum - 1);
    }
}

'''

我尝试过更改参数和递归函数的工作方式,但是运行代码时我得到的所有信息都是不确定的

1 个答案:

答案 0 :(得分:1)

您跳过了递归调用的返回结果
更改:

recCounter(shiftedUniCode + 1, substractedShiftNum - 1);

收件人:

 return recCounter(shiftedUniCode + 1, substractedShiftNum - 1);