Итак, я пытаюсь придумать способ шифрования/расшифровки цезарного шифра (где вы берете значение, а затем сдвигаете буквы, которые много раз вдоль алфавита, например, если ключ был 3, тогда a станет d, b будет e, а c будет f и т. Д.), Но мне нужно использовать рекурсию, а не итерацию. Вот что я до сих пор, но это только шифрование самого последнего символа и вывод «Шифрован - w», что для меня не имеет смысла.Цезарный шифр на Java с рекурсией?
public class Driver {
static String encrypted = "";
public static void main(String[] args) {
System.out.println("Encrypted - " + cipher("encrypt", 3));
}
public static String cipher(String str, int i){
char ch = str.charAt(0);
StringBuffer output = new StringBuffer();
if (str.length() <= 1) {
ch = (char) ('a' + (ch - 'a' + i) %26);
output.append(ch);
return output.toString();
}
else{
return cipher(str.substring(1),i);
}
}
}
Вы возвращаете только зашифрованный «хвост» в своем другом. Нужно объединить его с головой. – Thilo
Спасибо! Я так и думал ... но что ты имеешь в виду под голову? Как я могу это изменить? – Sarah
'return cipher (str.substring (1), i);' Это возвращает только конец строки. Вам нужно подумать о том, как объединить это с неполной частью, чтобы получить всю строку. – Thilo