Алгоритм кодовых войн

Проблема

Рекурсивная функция — это функция, которая вызывает сама себя во время своего выполнения.

재귀(рекурсивный) 함수는, 실행 중에 자신을 호출하는 함수이다.

Например:

function factorial(n) {
  return n <= 1 ? 1 : n * factorial(n - 1);
}

Ваша цель — завершить рекурсивную операцию, которая получает «str» как строку и возвращает ту же строку в обратном порядке.

역순으로 동일한 문자열을 반환하는 재귀 함수를 작성해라.

Функция должна выполняться ровно N раз.

함수는 정확히 N 번 실행되어야 한다.

Вспомогательные функции не допускаются.

도우미 함수는 허용되지 않는다.

Решение 01

function recursiveReverse(str) {
  if (str.length <= 1) {
    return str;
  } else {
    return str.slice(-1) + recursiveReverse(str.slice(0, -1));
  }
}
recursiveReverse('');      // ''
recursiveReverse('a');     // a
recursiveReverse('abcd');  // dcba
recursiveReverse('1234');  // 4321
  • slice(): 문자열의 일부를 추출하고, 새 문자열로 반환한다.

Решение 02

function recursiveReverse(str) {
  return str.length > 1 ? str.slice(-1) + recursiveReverse(str.slice(0, -1)) : str;
}
recursiveReverse('');      // ''
recursiveReverse('a');     // a
recursiveReverse('abcd');  // dcba
recursiveReverse('1234');  // 4321

Решение 03

function recursiveReverse(str) {
  return str.length > 1 ? recursiveReverse(str.slice(1)) + str[0] : str;
}
recursiveReverse('');      // ''
recursiveReverse('a');     // a
recursiveReverse('abcd');  // dcba
recursiveReverse('1234');  // 4321