рекурсивная функция, возвращающая undefined javascript - PullRequest
0 голосов
/ 10 февраля 2020

Я пытаюсь создать Цезарь-шифр, я знаю, что это может быть не самый лучший или самый простой способ сделать это, но я создал рекурсивную функцию, которая циклически добавляет числа к каждому символу, чтобы изменить его на другой символ, но когда я запускаю свой код вместо того, чтобы получить символ в качестве ответа, я получаю неопределенное

'' '

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 Ответ

1 голос
/ 10 февраля 2020

вы пропустили возврат по рекурсивному вызову
измените:

recCounter(shiftedUniCode + 1, substractedShiftNum - 1);

на:

 return recCounter(shiftedUniCode + 1, substractedShiftNum - 1);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...