我正在尝试创建一个凯撒密码,我知道这可能不是最好或最简单的方法,但是我创建了一个递归函数,该函数循环为每个字符添加数字以将其更改为另一个字符,但是当我运行代码而不是得到一个字符作为答案时,我却无法定义
'''
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);
}
}
'''
我尝试过更改参数和递归函数的工作方式,但是运行代码时我得到的所有信息都是不确定的
答案 0 :(得分:1)
您跳过了递归调用的返回结果
更改:
recCounter(shiftedUniCode + 1, substractedShiftNum - 1);
收件人:
return recCounter(shiftedUniCode + 1, substractedShiftNum - 1);