Алгоритм кодовых войн
Проблема
Рекурсивная функция — это функция, которая вызывает сама себя во время своего выполнения.
재귀(рекурсивный) 함수는, 실행 중에 자신을 호출하는 함수이다.
Например:
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